Python:在python中使用paramiko模块建立SSH连接,但连接未正确关闭以再次恢复工作

时间:2015-03-10 08:59:33

标签: python unix ssh

我正在使用paramiko模块从windows 7机器到unix机器进行ssh,然后在unix服务器上运行命令。该命令正确执行但面临一些特殊问题:

  1. 如果从命令窗口(cmd)运行python程序,则下一个命令提示符 即使python程序成功运行,也不会显示。由于这个原因,命令窗口没有使用“ result = os.system(”taskkill / im cmd.exe / f“)”关闭。但是, cmd.exe 进程已从任务管理器中删除。
  2. 由于ssh连接,我无法使用下面的代码在文件中写任何内容:
  3. fs = open("D:\VAS\unixConnectionLog.txt","a+") 
    fs.write("File Written: \n")

    请解决上述问题。是不是因为ssh连接没有正确关闭才能再次在Windows操作系统上执行操作?

    代码:我使用下面的代码进行ssh连接。

    import paramiko
    sshObj = paramiko.SSHClient()        
    sshObj.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    sshObj.connect('10.106.174.40', username='root',password='abc',port=22)
    stdin, stdout, stderr = sshObj.exec_command('uptime')
    while not stdout.channel.exit_status_ready():
        if stdout.channel.recv_exit_status()== 5:
            print "Command Successfully Executed \n"
    print stdout.readlines()
    sshObj.close

1 个答案:

答案 0 :(得分:0)

我有一些类似的问题。我确定你的代码仍然停留在类似于我的while循环中,因为paramiko在尝试退出之前不正确地处理线程。

尝试检查:

while not stdout.channel.exit_status_ready():
    if stdout.channel.recv_exit_status()== 5:
        print "Command Successfully Executed \n"
    print "Still here in the while loop"

如果它显示"仍然是她在while循环",它可能是我遇到问题的错误 - 线程问题。看到print命令后,尝试按Enter键,你应该退出。

请参阅:

https://stackoverflow.com/a/450895/4629821

刚开始使用python,所以帮助不大,但我也试图找到解决问题的方法。希望它有所帮助