因此,我正在整理一些使用 Paramiko 来 ssh 到远程服务器并向远程连接发送命令的东西。到目前为止,一切进展顺利,除了我似乎无法让 Paramiko 以字符串形式返回执行命令的结果。Paramiko 返回看起来像是通道实例及其状态的内容。这就是我现在正在尝试的:
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
hostname = 'xxxx'
port = 'xxxxx'
user = 'xxxxx'
password = 'xxxxx'
client.connect(hostname,port,user,password)
do_something(client)
def do_something(client):
object = client.exec_command('pwd')
print(object)
Run Code Online (Sandbox Code Playgroud)
以下是我运行程序时 Paramiko 给出的输出:
(<paramiko.ChannelFile from <paramiko.Channel 0 (open) window=2097152 ->
<paramiko.Transport at 0x6119f90 (cipher aes128-ctr, 128 bits) (active; 1
open chanel(s))>>>,
Run Code Online (Sandbox Code Playgroud)
所需的输出应该类似于:
object = client.exec_command('pwd')
print(object)
Run Code Online (Sandbox Code Playgroud)
输出:
'/var/www/html'
Run Code Online (Sandbox Code Playgroud)
本质上,如果您输入命令,我怎样才能让 Paramiko 返回字符串值而不是对象实例?我尝试了几种不同的方法,但我似乎无法解决这个问题!请指教!非常感谢!
我试图sesu在Paramiko的帮助下从Python在Unix服务器中运行命令exec_command。但是,当我运行此命令exec_command('sesu test')时,
sh:sesu:未找到
当我运行简单ls命令时,它会提供所需的输出。仅使用sesu命令无法正常工作。
这是我的代码的样子:
import paramiko
host = host
username = username
password = password
port = port
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,username,password)
stdin,stdout,stderr=ssh.exec_command('sesu test')
stdin.write('Password')
stdin.flush()
outlines=stdout.readlines()
resp=''.join(outlines)
print(resp)
Run Code Online (Sandbox Code Playgroud)