我需要从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.
我在这里做错了什么,我怎样才能让它发挥作用?
答案 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
会要求输入密码。有关详细信息,请参阅手册。