当前位置: 首页 > 面试题库 >

在设备上使用Paramiko exec_channel执行命令不起作用

长孙明知
2023-03-14
问题内容

我正在尝试使用Paramiko将SSH SSH到Brocade交换机中并执行远程命令。代码如下所示:

def ssh_connector(ip, userName, passWord, command):
 ssh = paramiko.SSHClient()
 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 ssh.connect(ip, username=userName, password=passWord, port=22)
 stdin, stdout, stderr = ssh.exec_command(command)
 print stdout.readlines()

ssh_connector(ip, userName, passWord, 'show running-config')

尝试运行代码时,遇到一个奇怪的错误,如下所示。

协议错误,不是以scp开头!

我不知道错误的原因或SSH连接是否成功。你能帮我这个忙吗?


问题答案:

如果SSHClient.exec_command不工作时,首先认为测试是尝试(上
一个 行):

ssh user@host command

它将使用与相同的SSH API(“
exec”通道)SSHClient.exec_command。如果您使用的是Windows,则可以使用plink(从PuTTY软件包中)代替ssh。如果ssh/也plink失败,则表明您的设备不支持SSH“
exec”通道。

对于您的情况,看来Brocade SSH服务器上的“ exec”通道已实现为scp仅支持该命令。

正如您声称能够“ SSH”到交换机一样,似乎“ shell”通道已完全正常工作。

虽然通常不建议使用“
shell”通道进行命令自动化,但是对于服务器,您将没有其他选择。使用,SSHClient.invoke_shell然后使用将命令写入通道(=写入外壳)Channel.send

channel = ssh.invoke_shell()
channel.send('ls\n')
channel.send('exit\n')


 类似资料:
  • 我试图在一个网站上使用gettext,为此我遵循O'Reilly媒体教程。在第一页的末尾,它说我需要使用命令,但是我的命令行返回以下内容:我在XAMPP上运行我的网站,所以我的整个目录是这样的: 我有考试。php在gettext文件夹中,以及消息。采购订单位于文件夹中。即使我尝试使用poedit,它也不起作用。这是我的测验。php代码: 我不确定bindtextdomain函数中的字符串是否正确。

  • 我正在构建一个基于阿尔卑斯山的docker图像。 当我以shell形式运行时,它工作正常,但当我以exec形式运行时,它会给出 /箱子/箱:[sh,:未找到 我试着使用bin/sh、sh、bin/ash、ash。所有这些都有相同的错误。

  • 问题内容: 我正在编写一个脚本来自动化Python中的某些命令行命令。目前,我正在打电话: 但是我需要在远程计算机上运行一些命令。手动地,我将使用ssh登录,然后运行命令。我将如何在Python中自动执行此操作?我需要使用(已知)密码登录到远程计算机,所以我不能只使用,我想知道是否应该使用一个模块? 问题答案:

  • 我只是在Windows中安装jdk和jre版本8。环境变量已设置。我尝试在cmd中运行“java-version”,它显示了安装的java版本。但是当我尝试用“javac projectname”编译java项目时,系统说javac不能被识别为内部命令或外部命令。有谁能告诉我怎么修好它吗? 下面是我的环境变量: C:\users\foody>echo%路径%C:\ProgramData\Oracl

  • 我想在Android设备上运行一些需要根权限的命令。这些命令应该使用java代码执行,因此应用程序本身应该能够运行这些命令,而不需要将设备连接到个人电脑并使用shell运行这些命令。 我使用了,然后使用了我想要运行的命令(chmod 666)。chmod666需要一个根设备才能正常运行,因此我尝试先使用获得超级用户权限,然后尝试运行它。我将java代码放在onCreate方法中。这是我的密码: 但

  • 我无法在iOS设备上进行测试