从远程卡住的paramiko ssh退出

时间:2017-04-19 04:08:52

标签: python multithreading ssh paramiko

这个问题与Taking the input from auto-execute user login using ssh execute command有关,我尝试采用另一种方法来解决当前的问题。

由于paramiko循环永远在等待用户输入命令。我无法杀死,有pid或做任何事情继续进行。

projects/DrawingProject

采用哪种方法,我尝试使用paramiko登录其他用户(root)并终止此远程用户。

在根目录中:

    stdin, stdout, stderr = self.connection.exec_command(command)

    while not stdout.channel.exit_status_ready():
        if stdout.channel.recv_ready():
            alldata = stdout.channel.recv(1024)
            rl, wl, xl = select.select([stdout.channel], [], [], 0.0)
            if len(rl) > 0:
                self.logger.info(stdout.channel.recv(1024), )

我尝试使用线程,但因为它无法处理。它无法执行下一个线程。

$ skill -KILL -u remoteuser

感谢。

2 个答案:

答案 0 :(得分:0)

我最后使用fabric

from fabric.tasks import execute
from fabric.api import run, settings, env

def remoteuser_login(self):
    env.user = 'remoteuser'
    env.password = 'remotepassword'
    with settings(prompts={'>': 'q\n'}):
        run('exit')

并执行

execute(remoteuser_login, host='ipaddress')

另外,对于hightlight,fabric还有命令超时,我们可以将其设置为在远程处理时退出。

<强> - 命令超时= N

http://docs.fabfile.org/en/1.13/usage/fab.html

答案 1 :(得分:0)

使用parallel-ssh

的备选方案
  document.getElementById("b2floor1").addEventListener("click",function loadFloor(){

     var hiddenElements =  [                
                "B3F1",
                "B3F2",
                "B3Title",
                "B5F1",
                "B5F2",
                "B5F3",
                "B5F4",
                "B5F5",
                "B5Title",
                "B2F1",
                "B2Title"                        
     ];




    document.getElementById('viewerDiv').style.visibility = 'visible';
    document.getElementById('hideMap').style.visibility = 'visible';

    for(var i = 0; i < hiddenElements.length; i++){

        document.getElementByID(hiddenElements[i]).style.display = 'none';
    }

有一个{{1}}设置在N秒不活动后超时,相当于命令超时。

使用库提出一个不同的paramiko作为Fabric在我和其他人的经历中是非常错误的。