#### SUMMARY
Ansible task with become !root fails with py3 (py2 is fine).

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
become

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.7
  config file = /home/danj/git/git.chown.me/ansible/ansible.cfg
  configured module search path = ['/home/danj/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/danj/venv/ansible/lib/python3.8/site-packages/ansible
  executable location = /home/danj/venv/ansible/bin/ansible
  python version = 3.8.2 (default, Apr 27 2020, 15:53:34) [GCC 9.3.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```
ANSIBLE_PIPELINING(/home/danj/git/git.chown.me/ansible/ansible.cfg) = True
CACHE_PLUGIN(/home/danj/git/git.chown.me/ansible/ansible.cfg) = memory
DEFAULT_ACTION_PLUGIN_PATH(/home/danj/git/git.chown.me/ansible/ansible.cfg) = ['/usr/local/share/ansible_plugins/action_plugins']
DEFAULT_CALLBACK_PLUGIN_PATH(/home/danj/git/git.chown.me/ansible/ansible.cfg) = ['/usr/local/share/ansible_plugins/callback_plugins']
DEFAULT_CONNECTION_PLUGIN_PATH(/home/danj/git/git.chown.me/ansible/ansible.cfg) = ['/usr/local/share/ansible_plugins/connection_plugins']
DEFAULT_FILTER_PLUGIN_PATH(/home/danj/git/git.chown.me/ansible/ansible.cfg) = ['/usr/local/share/ansible_plugins/filter_plugins']
DEFAULT_GATHERING(/home/danj/git/git.chown.me/ansible/ansible.cfg) = smart
DEFAULT_HOST_LIST(/home/danj/git/git.chown.me/ansible/ansible.cfg) = ['/home/danj/git/git.chown.me/ansible/hosts']
DEFAULT_LOOKUP_PLUGIN_PATH(/home/danj/git/git.chown.me/ansible/ansible.cfg) = ['/usr/local/share/ansible_plugins/lookup_plugins']
DEFAULT_MANAGED_STR(/home/danj/git/git.chown.me/ansible/ansible.cfg) = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}
DEFAULT_TIMEOUT(/home/danj/git/git.chown.me/ansible/ansible.cfg) = 10
DEFAULT_TRANSPORT(/home/danj/git/git.chown.me/ansible/ansible.cfg) = smart
DEFAULT_VARS_PLUGIN_PATH(/home/danj/git/git.chown.me/ansible/ansible.cfg) = ['/usr/local/share/ansible_plugins/vars_plugins']
RETRY_FILES_ENABLED(/home/danj/git/git.chown.me/ansible/ansible.cfg) = False
```

##### OS / ENVIRONMENT
Ansible "client" is ubuntu 20.04, target is OpenBSD -current.

##### STEPS TO REPRODUCE
```yaml
- name: add anoncvs.fr.obsd.org to the known hosts                                 
  become_user: danj                                                                
  become: "yes"                                                                    
  become_method: sudo                                                              
  lineinfile:                                                                      
    dest: /home/danj/.ssh/known_hosts                                              
    line: "anoncvs.fr.openbsd.org,145.238.209.46 ecdsa-sha2-nistp256 [...]"
    create: "yes"                                                                  
  tags:                                                                            
    - cvs                                                                          
    - tmpcvs
```
Most stuff is done as root as the priviledge user is required but sometimes I use another user with become/sudo and it fails, whatever the module is (lineinfile like here, or shell etc). The problem is with become.

##### EXPECTED RESULTS
It works with python2 (i.e. the target has ansible_python_interpreter=/usr/local/bin/python2)
```
TASK [cvs : add anoncvs.fr.obsd.org to the known hosts] ***************************************************************************************************************************************
task path: /home/danj/git/git.chown.me/ansible/roles/cvs/tasks/main.yml:62
Using module file /home/danj/venv/ansible/lib/python3.8/site-packages/ansible/modules/files/lineinfile.py
Pipelining is enabled.
<virtie-root> ESTABLISH SSH CONNECTION FOR USER: root
<virtie-root> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o ControlPath=/home/danj/.ansible/cp/1f07b313ca virtie-root '/bin/sh -c '"'"'sudo -H -S -n  -u danj /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-myjuvnfghfjvpjggsaqefxmykdpxfqqb ; /usr/local/bin/python2'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<virtie-root> (0, b'\n{"msg": "", "diff": [{"after": "removed for privacy reason", "src": null, "seuser": null, "delimiter": null, "mode": null, "firstmatch": false, "attributes": null, "backup": false}}}\n', b'')
ok: [virtie-root] => {
    "backup": "",
    "changed": false,
    "diff": [
        {
            "after": "[removed for privacy reasons]",
            "after_header": "/home/danj/.ssh/known_hosts (content)",
            "before": "[removed for privacy reasons]",
            "before_header": "/home/danj/.ssh/known_hosts (content)"
        },
        {
            "after_header": "/home/danj/.ssh/known_hosts (file attributes)",
            "before_header": "/home/danj/.ssh/known_hosts (file attributes)"
        }
    ],
    "invocation": {
        "module_args": {
            "attributes": null,
            "backrefs": false,
            "backup": false,
            "content": null,
            "create": true,
            "delimiter": null,
            "dest": "/home/danj/.ssh/known_hosts",
            "directory_mode": null,
            "firstmatch": false,
            "follow": false,
            "force": null,
            "group": null,
            "insertafter": null,
            "insertbefore": null,
            "line": "anoncvs.fr.openbsd.org,145.238.209.46 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIT93hmb9QFu8r8ZxbGk6xXKptPdFwg2xM0ClkQWqKuSXBPPDo6FSOdtUlfzJwaaWBnp+L+6SKJJZqLjepbfNyQ=",
            "mode": null,
            "owner": null,
            "path": "/home/danj/.ssh/known_hosts",
            "regexp": null,
            "remote_src": null,
            "selevel": null,
            "serole": null,
            "setype": null,
            "seuser": null,
            "src": null,
            "state": "present",
            "unsafe_writes": null,
            "validate": null
        }
    },
    "msg": ""
}
```

##### ACTUAL RESULTS
With -vvv: (if I add more verbosity, it doesn't pretty print the stack trace so it's as readable as you can expect, i.e. it's not)
```
TASK [cvs : add anoncvs.fr.obsd.org to the known hosts] ***************************************************************************************************************************************
task path: /home/danj/git/git.chown.me/ansible/roles/cvs/tasks/main.yml:62
Using module file /home/danj/venv/ansible/lib/python3.8/site-packages/ansible/modules/files/lineinfile.py
Pipelining is enabled.
<virtie-root> ESTABLISH SSH CONNECTION FOR USER: root
<virtie-root> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o ControlPath=/home/danj/.ansible/cp/1f07b313ca virtie-root '/bin/sh -c '"'"'sudo -H -S -n  -u danj /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-ybempfbcktyjiqpnfzkflihnyxlyekjq ; /usr/local/bin/python3'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<virtie-root> (1, b'', b'Traceback (most recent call last):\n  File "<stdin>", line 102, in <module>\n  File "<stdin>", line 17, in _ansiballz_main\n  File "<frozen importlib._bootstrap>", line 983, in _find_and_load\n  File "<frozen importlib._bootstrap>", line 963, in _find_and_load_unlocked\n  File "<frozen importlib._bootstrap>", line 906, in _find_spec\n  File "<frozen importlib._bootstrap_external>", line 1280, in find_spec\n  File "<frozen importlib._bootstrap_external>", line 1249, in _get_spec\n  File "<frozen importlib._bootstrap_external>", line 1213, in _path_importer_cache\nPermissionError: [Errno 13] Permission denied\n')
<virtie-root> Failed to connect to the host via ssh: Traceback (most recent call last):
  File "<stdin>", line 102, in <module>
  File "<stdin>", line 17, in _ansiballz_main
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 963, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 906, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1280, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1249, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1213, in _path_importer_cache
PermissionError: [Errno 13] Permission denied
The full traceback is:
Traceback (most recent call last):
  File "<stdin>", line 102, in <module>
  File "<stdin>", line 17, in _ansiballz_main
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 963, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 906, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1280, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1249, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1213, in _path_importer_cache
PermissionError: [Errno 13] Permission denied
fatal: [virtie-root]: FAILED! => {
    "changed": false,
    "module_stderr": "Traceback (most recent call last):\n  File \"<stdin>\", line 102, in <module>\n  File \"<stdin>\", line 17, in _ansiballz_main\n  File \"<frozen importlib._bootstrap>\", line 983, in _find_and_load\n  File \"<frozen importlib._bootstrap>\", line 963, in _find_and_load_unlocked\n  File \"<frozen importlib._bootstrap>\", line 906, in _find_spec\n  File \"<frozen importlib._bootstrap_external>\", line 1280, in find_spec\n  File \"<frozen importlib._bootstrap_external>\", line 1249, in _get_spec\n  File \"<frozen importlib._bootstrap_external>\", line 1213, in _path_importer_cache\nPermissionError: [Errno 13] Permission denied\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}
```
Thanks!
if not os.path.exists(path):
        raise AnsibleError("imported module support code does not exist at %s" % os.path.abspath(path))
    with open(path, 'rb') as fd:
        data = fd.read()
    return data
def _get_shebang(interpreter, task_vars, templar, args=tuple()):
    """
    Note not stellar API:
       Returns None instead of always returning a shebang line.  Doing it this
       way allows the caller to decide to use the shebang it read from the
       file rather than trust that we reformatted what they already have
       correctly.
    """