在命令之间暂停在SSH shell中运行Paramiko的Python脚本以允许完全转储

时间:2015-01-22 20:49:18

标签: python ssh paramiko

我在下一个命令写入命令​​之前努力编写命令的完整结果(至少这是我怀疑发生的事情)。

我编写了一个Python脚本,使用Paramiko将SSH连接到Cisco交换机,并从种子列表中执行命令列表,名为" cmdlist.txt"。

开始脚本
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
chan = ssh.invoke_shell()
TERM_WIDTH = 'terminal width 250\n'
TERM_LENGTH = 'terminal length 0\n'
chan.send(TERM_WIDTH)
time.sleep(1)
chan.send(TERM_LENGTH)
time.sleep(1)

with open('cmdlist.txt') as CMDLIST:
  for CMD in CMDLIST:
      COMMAND = '{}\n'.format(CMD)
      chan.send(COMMAND)
      time.sleep(30)
      COMMAND_Ret = chan.recv(9999)
      COMMAND_Ret = COMMAND_Ret.decode('utf8')
      COMMAND_Ret = StripLastLine(COMMAND_Ret)
      if set ('^').intersection(COMMAND_Ret):
           COMMAND = COMMAND.rstrip()
           FAILURE = '\nCOMMAND {} FAILED.\n\n\n'.format(COMMAND)
           RESULTS.write(FAILURE)
      else:
           COMMAND = COMMAND.rstrip()
           RESULTS.write(COMMAND_Ret)
停止脚本

我玩过" time.sleep()"延迟,但它不会阻止长命令写入前一个命令。

是否有一种方法让脚本暂停一段命令完成所需的时间,然后在脚本完成所有内容写入后继续?

感谢帮助!

0 个答案:

没有答案