我正在尝试编写一个脚本来登录远程机器,运行命令并返回输出。我正在使用 paramiko 库在 python 中执行此操作。然而,由于某种原因,没有产生完整的输出,只有一行。
为了隔离问题,我创建了一个名为 simple 的本地脚本,它运行命令并将输出发送到文件 remote_test_output.txt。然后我只是简单地 sftp 文件。该文件仅包含相同的一行。唯一的一行输出每次都是一样的:命令的响应码。
当我手动完成所有这些操作(ssh over、登录并运行 ./simple)时,一切都按预期工作并且输出文件是正确的。但是,通过我机器上的脚本执行此操作,它只返回单行。
我的代码:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", "known_hosts")))
ssh.connect(host, username, password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('LD_LIBRARY_PATH=/opt/bin ./simple\n')
print "output:", ssh_stdout.read()+"end" #Reading output of the executed command
print "err:", ssh_stderr.read()#Reading the error stream of the executed command
sftp = ssh.open_sftp()
sftp.get('remote_test_output.txt', 'local_test_output.txt')
sftp.close()
返回的内容:
response code: 128
应该返回什么:
field1:value1
field2:value2
response code: 128
field3:value3
field4:value4
etc
有谁知道为什么我试图调用的命令没有正常输出?
我必须包含 LD_LIBRARY_PATH 变量赋值,否则我得到一个库不存在错误。