|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
抄了一个别人的代码
def sshRunCmd(hostname, username, password, cmdlist):
try:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 创建ssh连接
client.connect(hostname=hostname, port=22, username=username, password=password)
# 开启ssh管道
ssh = client.get_transport().open_session()
ssh.get_pty()
ssh.invoke_shell()
# 执行指令
for cmd in cmdlist:
ssh.sendall(cmd)
#我就想在这里加个判断,如果上面的东西执行完毕了(也就是不再继续产生内容了),那么就往下进行,否则就等待,远程主机是比较蠢的设备,不是通用的linux
time.sleep(2)#因为执行的命令比较多,不想把这个sleep时间弄的太长,我试过sleep调到10分钟就没有问题
result = ssh.recv(102400)
result = result.decode(encoding='UTF-8', errors='strict')
print(result)
f = open(path + '/' + hostname +'_'+ today + ".txt", "a")
#f.write("111 ")
f.write(result)
f.close()
except Exception as e:
print("[%s] %s target failed, the reason is %s" % (datetime.datetime.now(), hostname, str(e)))
else:
print("[%s] %s target success" % (datetime.datetime.now(), hostname))
finally:
ssh.close()
client.close()
比如cmdlist['dir c:/s','dir d:/s']
这个dir c:/s可能要执行几分钟,我想有一个判断,知道这个dir c:/s已经输出完毕,而不是输出刚滚到一半就没了
比如对比一下当前接收到的东西跟一秒前有什么区别,如果没有区别,就往下进行
但是就是不知道有没有这样的工具
或者接收到的变量内存占用超过n秒没有变化啥的也行。。 |
|