Python paramiko.exec_命令()未执行并返回;在CLI中找到额外的参数;
我正在尝试使用Paramiko对服务器进行ssh,并执行一个命令。但是paramiko.exec_command()返回一个错误。为什么会发生这种情况 这是我的Python脚本:Python paramiko.exec_命令()未执行并返回;在CLI中找到额外的参数;,python,python-3.x,network-programming,paramiko,Python,Python 3.x,Network Programming,Paramiko,我正在尝试使用Paramiko对服务器进行ssh,并执行一个命令。但是paramiko.exec_command()返回一个错误。为什么会发生这种情况 这是我的Python脚本: import paramiko ssh = paramiko.SSHClient() ssh.load_system_host_keys() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('10.126.141.132',
import paramiko
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('10.126.141.132', username='usrm', password='passwd')
stdin, stdout, stderr = ssh.exec_command("show chassis")
print(stdout.readlines())
ssh.close()
执行时,它返回此消息:
['在CLI中找到额外参数,不支持此操作,正在退出CLI会话:\n']
我在Windows上使用带Paramiko的Python 3.5.2::Anaconda 4.1.1(64位)
我已经手动尝试了这些命令,它正在工作。根据您的最新评论: 我安装了一个Cygwin终端,并用SSH命令对服务器进行了SSH…它出现了
额外参数
错误。我执行的命令:sshusrm@10.126.141.132“显示机箱”
,输出:终端类型“dumb”无条目;使用哑终端设置。在CLI中找到额外参数,不支持此操作,正在退出CLI会话:
听起来SSH服务器上的usrm
帐户的登录shell不允许以非交互方式运行命令。要解决此问题,您必须像这样使用invoke_shell()
:
chan = ssh.invoke_shell()
chan.sendall('show chassis\r')
s = chan.recv(4096)
print s
如果
ssh,则提供完整跟踪检查usrm@ip“显示机箱”
在命令行中工作。@whjm在Putty中尝试了该命令。它按预期提供机箱信息。还尝试了其他一些提供有效输出的命令。但脚本给出了上述信息。不知道为什么。@dmaneesh7--不太清楚您所说的在putty中尝试是什么意思,但您必须运行ssh。。。在shell中显示chassis
命令(如bash
)。正如我所说,您必须使用ssh命令来尝试它(通常在任何Unix/Linux系统上都可以使用)。非常感谢您提供的解决方案。recv()返回shell上的所有内容,并且\r\n,提示#和b’…有没有办法防止这种情况发生,或者我应该只格式化输出?这就像你在手动与shell交互一样,recv()
(和recv\u stderr
)将返回包括shell提示在内的所有内容。找到了删除这些特殊字符的方法…recv()返回字节
…通过使用recv().decode(“UTF-8”)
我们将得到一个不带b'的正确unicode字符串和插入的转义字符。。。