これはPython3でテストされたコードの一部です。
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
そして
subprocess.Popen(['ssh', "me" + '@' + 123.45.67.891, '-p', "22"]
実行すると、パスワードを求められます。
Password:
Password:
Password:
接続をテストしましたが、うまくいきます。
ssh [email protected] "uname -a"
注:簡単な作業のために、より多くのライブラリをインストールしないでください。
編集:完全なコードは次のとおりです。
#!/usr/bin/python3
import subprocess
import sys
HOST="123.45.67.891"
# Ports are handled in ~/.ssh/config since we use OpenSSH
COMMAND="uname -a"
ssh = subprocess.run(["ssh", "123.45.67.891", "uname -a"],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=False)
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print >>sys.stderr, "ERROR: %s" % error
else:
print (result)
EDIT2:cntl-Cを実行すると、次の結果が表示されます。
Password: Traceback (most recent call last):
File "./sshtest2.py", line 13, in <module>
check=False)
File "/usr/lib/python3.6/subprocess.py", line 405, in run
stdout, stderr = process.communicate(input, timeout=timeout)
File "/usr/lib/python3.6/subprocess.py", line 843, in communicate
stdout, stderr = self._communicate(input, endtime, timeout)
File "/usr/lib/python3.6/subprocess.py", line 1514, in _communicate
ready = selector.select(timeout)
File "/usr/lib/python3.6/selectors.py", line 376, in select
fd_event_list = self._poll.poll(timeout)
KeyboardInterrupt