需要帮助解决paramiko问题
我可以使用pexpect连接到服务器,登录和运行命令都没有问题。不过,我想换成用paramiko来建立ssh连接,这样可以利用paramiko的一些其他模块。但是,当我使用paramiko时,出现了这个错误:
sock.connect((hostname, port))
File "<string>", line 1, in connect
socket.error: [Errno 113] No route to host
我不明白为什么会说“没有到主机的路由”,因为我确实可以通过pexpect连接到这个节点,或者直接用ssh连接到这个节点。
如果有人能帮我找出问题所在,我将非常感激。我甚至不知道该如何开始排查这个问题。
我在启用调试的情况下运行paramiko,像这样,但我没有收到任何调试信息,脚本就直接失败了:
paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
1 个回答
1
如果你能提供一个简化的代码示例,那会很有帮助。
检查一下名字解析是否正常进行:
socket.gethostbyname(hostname)
另外,我不太明白你为什么要直接使用 socket
?还是说这是你在遇到错误时看到的堆栈跟踪和错误信息的一部分?
你应该可以用下面这样的方式来实现你想要的功能:
from paramiko.client import SSHClient
client = SSHClient()
client.load_system_host_keys()
client.connect('ssh.example.com')
stdin, stdout, stderr = client.exec_command('ls -l')
print stdout
如果你能提供完整的错误信息、堆栈跟踪和你使用的代码,那会更有帮助。