这是我定义的一个ssh登陆并使用命令获取执行结果的一个函数,现在使用的是time.sleep() 来保证命令能够执行完成。这样就导致我批量执行的速度就比较慢,请问可否有不使用time.sleep() 方法,使用循环来判断我的命令已执行完成。然后将结果输出到output。
不要使用exec_command方法,这个一次只能执行一条命令。
import paramiko
import time
device_ip = '1.1.1.1'
username = 'luotao'
password = 'luotao'
command1 = 'terminal length 0'
command2 = 'show run'
command3 = 'show tech'
def ssh_exec_command2(device_ip, username, password, command1, command2):
port = 22
ssh_client = paramiko.SSHClient()
ssh_client.load_system_host_keys()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(device_ip, port, username, password, timeout=5)
print('连接设备 ', device_ip)
command = ssh_client.invoke_shell()
command.send(command1+'\n')
time.sleep(1)
command.send(command2+'\n')
time.sleep(50)
command.send(command3+'\n')
time.sleep(50)
output = command.recv(999999)
ssh_client.close()
return output
0 提建议
微信扫一扫 点击复制链接
分享 邀请回答
当前问题酬金
¥ 30
(您已提供 ¥ 20, 还可追加 ¥