老哥们我这个到底是怎么回事啊,搜也搜不出来,这个command我看视频没有写啊
根据你提供的代码片段,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'命令,然后打印输出结果。
总结一下,需要注意的要点:
如第一个例子:
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')
来切换用户,需要通过下一种方法实现