Первый пост, новый для пакетной обработки и сценариев в целом, поэтому, пожалуйста, будьте осторожны со мной.
Мне было поручено написать сценарий Perl, который будет запускать сеансы SSH с 6 телефонами и отправлять им одну команду CLI для перезагрузки.их.Забавно, я знаю ДЖЕКА о Perl.Я немного разбираюсь в автоматизации партий и подумал, что было бы довольно просто использовать plink, чтобы делать то, что мне нужно.Насколько я ошибался.
Вот пример моего пакета plink.
@echo off
plink.exe -t -ssh XXXXXXX@111.111.1.1 -pw Abcd1234 < "C:\commands\commands.txt">output.txt
pause
Commands.txt:
debug
debug
reset hard
Запуск пакетного файла возвращает окно cmdОтображение: Использование имени пользователя "XXXXXXX" И мой output.txt показывает:
debug
debug
reset hardsnoopyplus login:
Именно в этот момент я понял, что мне нужно получить некоторое представление о том, как обслуживать этот второй набор учетных данных перед отправкой сбросакоманда.
Здесь мы на третий день, и мой босс хотел бы получить некоторые результаты.У меня есть около 4 сломанных итераций моего сценария и хорошее отношение.Что я могу попробовать?
Кроме того, вот часть сценария Perl, который я обнаружил, который утверждал, что может обрабатывать отладочный логин snoopyplus для телефонов cisco, который я не смог заставить работать.Небольшая информация, которую я нашел, подсказала мне переписать ее в OpenSSH, которая, как мне кажется, не поддерживается в Windows.
sub reboot{
my ($ip,$sshpassword,$sshusername,$debuglogin,$debugusername,$debugpassword,$debugprompt,$command) = @_;
print "\nPlease be patient whilst Cisco phone at address $ip is rebooted. This may take up to 90 seconds to complete...\n";
my $ssh = Net::SSH::Perl->new("111.111.1.1");
my $login_output = $ssh->login();
#my $ssh->login($sshusername, $sshpassword) || myAuditLog(LOG,"Login has failed. $!");
$ssh->waitfor('/'.$debuglogin.'>.*$/');
$ssh->send($debugusername);
$ssh->waitfor('/Password :.*$/');
$ssh->send($debugpassword);
$ssh->waitfor('/'.$debugprompt.'>.*$/');
$ssh->exec($command);
$ssh->close();