Давний участник, первый раз постер. Я тщательно исследовал эту проблему, но я не нашел решения этой конкретной проблемы.
Я работаю в 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 (это было чтобы запустить интерпретатор perl на удаленном сервере, прежде чем вызывать скрипт с ключом -m)
Я получаю выходные данные из первых 3 команд, затем под результатами команды whoami я получаю мигающий курсор.
Итак, теперь я пытаюсь установить путь к локальному скрипту, который вы видите опубликованным выше:
plink -ssh username @ Ipaddress -pw пароль (имя хоста; pwd; whoami; perl) -m C:\Users\ путь \ к \ файлу \ LinuxPingScript.pl
Когда я запускаю вышеупомянутую команду, я получаю эту ошибку:
bash: -c: строка 0: синтаксическая ошибка рядом с неожиданным токеном
-m' bash: -c: line 0:
(имя хоста; perl) -m C:\Users\path\to\file\LinuxPingScript.pl`
Есть ли другой способ запустить интерпретатор, прежде чем я вызову скрипт? Или есть другой способ сделать это? Я должен запустить тест ping с удаленного сервера, к которому я обычно обращаюсь через Putty. Но я подумал, что поскольку это можно автоматизировать, я мог бы использовать Plink.
Я довольно новичок в этом и был бы признателен за любую помощь, которую я могу получить.