1

我需要从 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.

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

4

1 回答 1

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 代理才能使其工作,否则plink会要求输入密码。有关详细信息,请参阅手册。

于 2013-04-18T14:55:49.410 回答