我有许多设备需要测试。为此,我需要通过SSH执行命令。我正在使用Python和Paramiko。这是问题。每次我通过SSH运行命令时,Paramiko是否会打开一个新的SSH会话并创建一个新进程,或者一直保持打开状态直到关闭它?这很重要,因为我将必须运行数千个测试。每次打开一个新的会话将花费几秒钟。如果我可以节省数千次测试的时间,则可以节省大量时间。
如果它不能使会话保持打开状态,该如何保持它打开以便我无需每次登录即可执行命令,甚至可能吗?如果Paramiko无法实现,我可以使用其他模块吗?
我发现了this,但它们似乎都是Paramiko的包装纸,或者它们已经过时了。
她是我要执行的命令的示例:
hostname = '192.168.3.4'
port = 22
username = 'username'
password = 'mypassword'
s = paramiko.SSHClient()
s.load_system_host_keys()
s.connect(hostname, port, username, password)
command = 'ls -lah'
(stdin, stdout, stderr) = s.exec_command(command)
(stdin, stdout, stderr) = s.exec_command(command)
(stdin, stdout, stderr) = s.exec_command(command)
(stdin, stdout, stderr) = s.exec_command(command)
答案 0 :(得分:0)
这取决于您对每个命令重复执行代码的哪一部分。
如果仅重复SSHClient.exec_command
呼叫,则您仍在使用相同的连接。
有关exec_command
的内部信息,请参见我的回答:
What is the difference between exec_command and send with invoke_shell() on Paramiko?
如果重复整个代码,包括SSHClient.connect
,显然您每次都在重新登录。