在 Python 3.4.3 中使用 Paramiko 运行多个 SSH 命令
Posted
技术标签:
【中文标题】在 Python 3.4.3 中使用 Paramiko 运行多个 SSH 命令【英文标题】:Running Multiple SSH Commands Using Paramiko in Python 3.4.3 【发布时间】:2016-07-08 11:10:51 【问题描述】:我试图在一个盒子上运行多个命令,但仅第一个命令成功。这似乎与 fork 有关,但我不知道如何解决这个问题。我们将非常感谢您的帮助或指导。
我的脚本
import paramiko
#Made in python 3.4.3
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('xxx.xx.xx.xx', port=22, username='domain\myusername', password='mypassword')
stdin, stdout, stderr = ssh.exec_command('vol status -f') #this being the first command works fine
output = stdout.readlines()
print ("\n".join(output))
stdin, stdout, stderr = ssh.exec_command('disk show -n')
output1 = stdout.readlines()
print ("\n".join(output1))
#stdin, stdout, stderr = ssh.exec_command('vol status -s')
#stdin, stdout, stderr = ssh.exec_command('df -Ag')
ssh.close()
input("Press <Enter> to exit ")
输出:
Traceback (most recent call last):
File "C:\Users\myusername\Desktop\folder_copy\test.py", line 13, in <module>
stdin, stdout, stderr = ssh.exec_command('disk show -n')
File "C:\Python34\lib\site-packages\paramiko-1.16.0-py3.4.egg\paramiko\client.py", line 401, in exec_command
chan = self._transport.open_session(timeout=timeout)
File "C:\Python34\lib\site-packages\paramiko-1.16.0-py3.4.egg\paramiko\transport.py", line 702, in open_session
timeout=timeout)
File "C:\Python34\lib\site-packages\paramiko-1.16.0-py3.4.egg\paramiko\transport.py", line 823, in open_channel
raise e
File "C:\Python34\lib\site-packages\paramiko-1.16.0-py3.4.egg\paramiko\transport.py", line 1726, in run
ptype, m = self.packetizer.read_message()
File "C:\Python34\lib\site-packages\paramiko-1.16.0-py3.4.egg\paramiko\packet.py", line 386, in read_message
header = self.read_all(self.__block_size_in, check_rekey=True)
File "C:\Python34\lib\site-packages\paramiko-1.16.0-py3.4.egg\paramiko\packet.py", line 251, in read_all
raise EOFError()
EOFError
【问题讨论】:
【参考方案1】:如果您认为 fork 是问题所在,请尝试使用 Transport 类的 atfork()
method。
【讨论】:
@RyanS ...感谢您的回复。我没有使用过atfork()
,但会试一试。以上是关于在 Python 3.4.3 中使用 Paramiko 运行多个 SSH 命令的主要内容,如果未能解决你的问题,请参考以下文章