【发布时间】:2020-01-17 01:06:03
【问题描述】:
我正在准备一个代码,以使用带有 Paramiko 的 ssh 访问远程服务器,并运行一些命令并查看 stdout 的输出。
我已经用 Ubuntu 服务器测试了代码,它运行良好,但是当我用不同的服务器(Windows 服务器和电信机器的接口)测试代码时,没有读取标准输出,
("Successfully executed command on remote server") 被打印,但以下 ("lines are read")
没有打印所以我断定代码挂在stdout=stdout.readlines()
代码复制在下面,请你帮我弄清楚这个失败背后的原因是什么?
我还想补充一点,如果我使用 PuTTY 在该服务器上执行命令,我会得到正确的输出。
import paramiko
import os
user_name = "****"
passwd = "******"
ip = "*.*.*.*"
print ("Please wait creating ssh client ...")
ssh_client = paramiko.SSHClient() #Create sshclient instance
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print ("Please wait, connecting to remote server")
ssh_client.connect(hostname=ip,username=user_name,password=passwd)
cmd="mml \n command2"
print ("Please wait, executing command on remote server")
stdin,stdout,stderr=ssh_client.exec_command(cmd)
print ("Successfully executed command on remote server")
stdout=stdout.readlines()
print ("lines are read")
stdout="".join(stdout)
ssh_client.close()
print ("Connection closed")
print (stdout)
os.system("pause")
【问题讨论】:
-
你确定没有抛出异常吗? + 您是否遇到任何命令或某些特定命令的问题? + 那是什么服务器?
-
您好,是的,没有任何输出就挂起也不例外。这是一个windows服务器通过内部协议与另一台电信机器通信,登录后第一个命令是mml,(用于人机语言),然后我可以为这个电信提供商键入一些特定的命令。
标签: python ssh stdout paramiko readline