使用python将plink ssh命令作为来自txt文件的变量

时间:2016-11-29 11:56:08

标签: python text ssh command subprocess

我有一个关于使用plink和从外部文件发送命令作为变量的问题。

test.txt 在里面:

id -a user.name1\n; id -a user.name2\n; id -a user.name3\n;exit\n

此代码不起作用:

import subprocess
sshoutput = open("c:/sshoutput.txt", "w")
sshoutputerror = open("c:/sshoutputerror.txt", "w")
sshinput = open("C:/test.txt", "r").read()
ssh = subprocess.Popen("plink user.name@server -pw password",shell=True, stdin=subprocess.PIPE, stdout=sshoutput, stderr=sshoutputerror)
ssh.communicate(sshinput)

但是,如果我将最后一行 sshinput 更改为“id -a user.name1 \ n; id -a user.name2 \ n; id -a user.name3 \ n;退出\ n“

ssh.communicate("id -a user.name1\n; id -a user.name2\n; id -a user.name3\n;exit\n")

这实际上有效,但我想使用外部文件中的命令。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试在 test.txt 文件中包含引号内的行。

像这样:

 "id -a user.name1\n; id -a user.name2\n; id -a user.name3\n;exit\n"

在read()的位置使用readline():

import subprocess
sshoutput = open("c:/sshoutput.txt", "w")
sshoutputerror = open("c:/sshoutputerror.txt", "w")
sshinput = open("C:/test.txt", "r").readline()
ssh = subprocess.Popen("plink user.name@server -pw password",shell=True, stdin=subprocess.PIPE, stdout=sshoutput, stderr=sshoutputerror)
ssh.communicate(sshinput)