2014-01-22 177 views
0

我使用这个命令罚款:通过SSH远程运行本地脚本,同时通过arguements

ssh [email protected] 'bash -s' -- < /usr/local/nagios/libexec/check_ssh_mem.sh 

我不喜欢那个剧本的结果,因此要使用perl脚本来代替,而这一点:

ssh [email protected] 'perl -s' -- < /usr/local/nagios/libexec/check_mem.pl 

check_mem.pl v1.0 - Nagios Plugin 

usage: 
    check_mem.pl -<f|u> -w <warnlevel> -c <critlevel> 

options: 
-f   Check FREE memory 
-u   Check USED memory 
-C   Count OS caches as FREE memory 
-w PERCENT Percent free/used when to warn 
-c PERCENT Percent free/used when critical 

正如您所看到的,我从脚本中获得适当的反馈。我想将-f,-w和-c变量传递给它,但在尝试这样做时会出错。

+0

什么是错误?我怀疑你没有引用脚本的路径和你的参数被送到ssh。 – user3183018

回答

0

man perlrun说:

Upon startup, Perl looks for your program in one of the following places 
... 
3. Passed in implicitly via standard input. This works only if there are 
    no filename arguments--to pass arguments to a STDIN-read program you must 
    explicitly specify a "-" for the program name. 

所以,你可以使用这个:

ssh [email protected] 'perl - -f -u -C' -- < /usr/local/nagios/libexec/check_mem.pl 

的参数后 - 被传递给正在运行的脚本。

您不需要-s参数 - 我假设您从原始bash实现中复制了该参数,但-s对perl有不同的含义。

+0

这很好!非常感谢你...这样一个简单的修复:) – BanditBBS

相关问题