在windows中使用python在linux上运行远程perl脚本

时间:2013-04-18 14:41:57

标签: python linux windows perl ssh

我需要从Windows机器连接到远程Linux服务器并执行Perl脚本。 我尝试过使用

command = "perl /usr/local/xfer/file.pl -ssh root@"+hostname+" -pw password -batch"
pid = subprocess.Popen(command, shell=True)

但它告诉我Can't open perl script "usr/local/xfer/file.pl'": No such file or directory.

我在这里做错了什么,我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

上面的命令使用Windows上的Perl安装,但您说脚本位于Linux服务器上。

所以你需要在调用ssh:

时包装调用
child = subprocess.Popen(['plink', '-ssh', 'user@server', 'perl', '/usr/local/xfer/file.pl', 
            '-ssh', 'root@'+hostname, '-pw', 'password', '-batch'], shell=True)

注意:从不使用subprocess.Popen()的“字符串命令”版本,始终将命令和参数作为列表传递。

回到你的问题:这将启动plink(Putty的命令行版本,因为Windows没有ssh(1)),所有其他列表元素都作为参数。

请注意,Putty Agent必须运行才能生效,否则plink会要求输入密码。有关详细信息,请参阅手册。