Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python paramiko.exec_命令()未执行并返回;在CLI中找到额外的参数;_Python_Python 3.x_Network Programming_Paramiko - Fatal编程技术网

Python paramiko.exec_命令()未执行并返回;在CLI中找到额外的参数;

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',

我正在尝试使用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', 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字符串和插入的转义字符。。。