ssh user@host command这将使用与 SSHClient.exec_command 相同的 SSH API(exec"通道).如果您使用的是 Windows,则可以使用 plink(来自 PuTTY 包)而不是 ssh.如果 ssh/plink 也失败,则表明您的设备不支持 SSHexec".频道.That will use the same SSH API (the "exec" channel) as SSHClient.exec_command. If you are on Windows, you can use plink (from PuTTY packages) instead of ssh. If ssh/plink fails too, it indicates that your device does not support the SSH "exec" channel.我是你的情况,似乎是exec"Brocade SSH 服务器上的通道仅支持 scp 命令.I your case, it seems that the "exec" channel on Brocade SSH server is implemented to support the scp command only.正如您声称能够SSH"一样到开关,似乎壳"频道正在全面运作.As you claim to be able to "SSH" to the switch, it seems that the "shell" channel is fully working.虽然一般不推荐使用shell"命令自动化的通道,对于您的服务器,您将没有其他选择.使用 SSHClient.invoke_shell 并使用 Channel.send.While it is generally not recommended to use the "shell" channel for command automation, with your server you won't have other option. Use the SSHClient.invoke_shell and write the commands to the channel (= to the shell) using the Channel.send.channel = ssh.invoke_shell()channel.send('ls\n')channel.send('exit\n')另请参阅Paramiko 上的 exec_command 和使用 invoke_shell() 发送有什么区别?.C#/SSH.NET 上的类似问题:SSH.NET 未在设备上执行命令.强制性警告:请勿使用 AutoAddPolicy – 您将失去针对 MITM 攻击 这样做.如需正确的解决方案,请参阅Paramiko未知服务器".Obligatory warning: Do not use AutoAddPolicy – You are losing a protection against MITM attacks by doing so. For a correct solution, see Paramiko "Unknown Server". 这篇关于在设备上使用 Paramiko exec_command 执行命令不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-19 13:02