Выполнение скрипта Python AutoGUI на SSH Remote выполняет команды на хосте SSH - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь выполнить мой скрипт на Python через ssh на моем Pi. Я настроил свои ключи Priv / Pub и выполнил их с помощью сценария python на моей хост-машине:

subprocess.run('ssh -p 2222 john@<IP_of_Pi> python3 /home/john/test.py', shell=True)

Я пытаюсь автоматизировать некоторые вещи с помощью autogui. Мой основной скрипт выглядит так

import pyautogui as aut

aut.PAUSE = 1
aut.keyDown('ctrl')
aut.keyDown('alt')
aut.press('t')
aut.keyUp('alt')
aut.keyUp('ctrl')
aut.typewrite(['f','i','r','e','f','o','x','enter'])
aut.hotkey('alt','d')
aut.typewrite(['d','u','c','k','d','u','c','k','g','o','.','c','o','m','enter'])

Моя проблема в том, что все команды, которые я выполняю, выполняются на моем локальном хост-компьютере. То же самое происходит, если я использую другие платформы автоматизации, например, Селен. Каждый браузер, который я открываю, запускается не на моем Pi, а на моем хост-компьютере.

Я пробовал несколько модификаций подпроцесса, например

subprocess.run(['ssh','-p','2222 ','john@<IP_of_Pi>', 'python3', /home/john/test.py'])
subprocess.run(['ssh','-p','2222 ','john@<IP_of_Pi>', 'python3', /home/john/test.py'],shell=True,stdout=subprocess.PIPE)
subprocess.Popen(['ssh','-p','2222 ','john@<IP_of_Pi>', 'python3', /home/john/test.py'])
...

Я могу повторно вызвать ошибки, если я выполню test.py в своей оболочке, браузер все еще открывается на моем хосте.

На всякий случай, ssh_config на моем пульте (Pi):

Host *
#   ForwardAgent no
#   ForwardX11 no
#   ForwardX11Trusted yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
#   Protocol 2
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
...