长期会员,第一次海报。我已经对这个问题进行了详尽的研究,但没有找到解决此特定问题的解决方案。
我在NOC工作,负责监视服务器。我不时收到包含数百个IP的列表,我需要检查这些列表并获取报告的状态。
在研究此问题时,我发现此脚本似乎可以完全满足我的需要。
LinuxPingScript.pl
#!/usr/bin/perl
use Net::Ping;
use strict;
open(INFILE, "<", "ip_list") or die("cannot open INFILE: $!");
my @ip_array = <INFILE>;
close(INFILE);
open(OUTFILE, ">", "ping_output") or die("unable to write output: $!");
chomp(@ip_array);
$p = Net::Ping->new();
foreach(@ip_array)
{
if($_ =~ /\d+.\d+.\d+.\d+/)
{
if($p->ping($&))
{
print OUTFILE ("$`is responding to ping.\n");
}
else
{
print OUTFILE ("$`is NOT responding to ping.\n");
}
}
}
close(OUTFILE);
我在本地Windows计算机上打开命令提示符,然后运行以下命令:
plink -ssh username@Ipaddress -pw password (perl) -m C:\Users\path\to\file\LinuxPingScript.pl
我对以这种方式格式化命令的想法如下:
plink -ssh username@Ipaddress -pw password
(这成功将我登录到远程服务器)
然后我将其扩展为:
plink -ssh username@Ipaddress -pw password (hostname;pwd;whoami;perl -e perl)*
(这将ssh进入服务器,然后运行以下命令:hostname,pwd,whoami和perl -e perl(这是为了在使用-m调用脚本之前在远程服务器上启动perl解释器)
我从前三个命令得到输出,然后在whoami命令的结果下得到一个闪烁的光标。
因此,现在我尝试将路径设置为您在上面看到的本地脚本:
plink -ssh username @ Ipaddress -pw密码(主机名; pwd; whoami; perl)-m C:\ Users \ path \ to \ file \ LinuxPingScript.pl
当我运行上面的命令时,出现此错误:
bash:-c:第0行:意外令牌
-m' bash: -c: line 0:
(主机名; perl)附近的语法错误-m C:\ Users \ path \ to \ file \ LinuxPingScript.pl`
在调用脚本之前,还有另一种启动解释器的方法吗?还是有另一种方法可以解决这个问题?我必须从通常使用Putty访问的远程服务器上运行ping测试。但是我认为由于这可以自动化,所以我可以使用Plink。
我对此很陌生,将不胜感激。
使用PuTTY / Plink-m
开关指定的文件不能是Shell脚本。它只能包含一个顶级外壳程序命令列表,这些命令逐一执行。实际上,某些SSH服务器甚至不支持多个命令,仅支持一个。
如果要执行Perl脚本,则可以:
将其上传到服务器并执行
plink -ssh username@Ipaddress -pw password perl ./LinuxPingScript.pl
在服务器上执行Perl并将脚本提供给它:
plink -ssh username@Ipaddress -pw password perl < C:\Users\path\to\file\LinuxPingScript.pl
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句