2013-01-14 46 views
1

我有一个perl脚本,我需要使用ssh连接到另一台机器,然后运行另一个perl脚本。我尝试使用这一行:使用ssh在另一个脚本内运行perl脚本

system("ssh $admin_server 'perl /Perl/scripts/capture_server_restarts_gse.pl $month $date'"); 

但每次脚本到达那行,我获取远程计算机的提示和脚本不运行。

我该如何解决这个问题,以便脚本自动在另一台机器上运行而不显示提示。

注:我不需要密码和用户连接到我们已经解决了这个远程机器。

+0

先尝试基本的调试,如打印而不是系统,或者'touch /tmp/this.is.me.debugging'而不是perl脚本。还可以尝试给远程Perl解释器一些像-c和-w这样的开关,任何可以从中调试的东西。如何使SSH更详细? – Perleone

回答

4

为什么不把公钥复制到另一台机器上?这样你将被预先授权。

Here are the instructions如何做到这一点使用ssh-keygen

否则,你有你的密码养活ssh,这是棘手,因为ssh一般需要从tty输入,你必须使用密码配置脚本。

+0

没有必要,我已经改变了所有的权限,它没有问我密码 – Vordok

0

可以将SSH服务器配置为始终运行一些自定义shell而不是从客户端传递的命令。

尽量只运行在命令行中一些简单的命令,即:

ssh server ls 

一个不太可能的可能性是插值到系统参数perl的变量可能包含需要更好地逃避一些shell元字符。例如,在$ admin_server里面有一个分号。