paramiko的exec_command的问题

老哥们我这个到底是怎么回事啊,搜也搜不出来,这个command我看视频没有写啊

img

根据你提供的代码片段,exec_command()方法的参数应该是要远程执行的命令字符串,比如:
python
ssh.exec_command('ls -l')
exec_command()会在远程机器上执行命令,并返回一个包含标准输出、标准错误及退出状态码的元组。
所以你需要传入要在远程执行的Linux命令字符串作为参数,而不是像你代码中的command对象。
一个正确使用exec_command()的示例:
python
import paramiko

ssh = paramiko.SSHClient()
ssh.connect(hostname, username, password)

stdin, stdout, stderr = ssh.exec_command('ls -l')

print(stdout.read().decode())

ssh.close()
这将通过SSH连接到远程主机,执行'ls -l'命令,然后打印输出结果。
总结一下,需要注意的要点:

  1. exec_command的参数是字符串命令,而不是命令对象
  2. 返回的是一个包含标准输出、标准错误、状态码的元组
  3. 需要读取标准输出数据,并解码为字符串打印
    希望这能帮助你解决问题!
  • 这篇博客: python中的Paramiko模块(实现用户切换)中的 2.1 exec_command()介绍 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •   如第一个例子:
    stdin, stdout, stderr = ssh.exec_command('df -h ')

    	stdin: 标准输入
        stdout: 标准输出(正确输出)
        stderr: 错误输出
        同时只有一个变量有值
        
        stdout.read() 来进行输出,通过stdout.read().decode('utf-8')进行编码转换输出
        注意:返回的值是 byte类型,而不是str类型,有需要需要进行转换
    

      这种方法不能用于切换用户,即不能ssh.exec_command('su root')来切换用户,需要通过下一种方法实现