Вот пост о том, как это сделать я нашел.
Недавно у меня был проект, который требовал сценария для выполнения сеанса SSH с устройством Cisco и внесения некоторых изменений в конфигурацию. Мой любимый язык сценариев, конечно, Perl.
Ранее я писал сценарии с использованием модуля Net :: Telnet, который связывался с устройством по Telnet, обнаруживал различные запросы устройства и отправлял на устройство команды для изменения его конфигурации. Итак, я подумал, что это будет довольно простой случай - найти подходящий аналогичный модуль, который использует SSH вместо Telnet.
Еще одна вещь, которую я должен упомянуть, это то, что я обычно ограничен использованием платформ Win32 (т.е. Windows 200, 2003, XP) из-за того, что большинство клиентских сайтов, на которых я работаю в эти дни, не используют Unix (или Linux) ... что, на мой взгляд, очень жаль, но я не устанавливаю корпоративную политику своих клиентов.
Первоначальный взгляд на доступные модули Perl выявил ряд модулей, которые, казалось, были именно тем, что мне нужно:
Net :: Appliance :: Session
Net :: SSH :: W32Perl
Net :: SSH
Итак, я сказал своему боссу: «Да, без проблем», и начал собирать скрипт для SSH на удаленном устройстве и отправить ему несколько команд для изменения его конфигурации.
После дня или около того пробуя различные модули, я подумал: «Хм, может быть, это будет не так просто, как я думал!»
Кажется, у каждого из модулей, на которые я смотрел, была проблема с использованием его в среде Windows. Подводя итог, вот проблемы, которые я нашел с каждым модулем:
* Net::Appliance::Session : has a dependency on IO::Pty, which won't ever run on Windows
* Net::SSH::W32Perl : ``getpwuid function is unimplemented'' message`` when building from scratch. Older ppd's found at http://www.soulcage.net/ppds.58 just don't seem to work....even when installed in to the Activestate perl distribution
* Net::SSH : Unix only
Итак, в этот момент я начал думать, что, возможно, это просто не будет работать на Windows ....
Затем я вспомнил, как видел публикацию на Perl-монгерах, где кто-то упоминал, что они использовали Perl в Cygwin для запуска одного из модулей Net :: *.
Итак, хотя мысль о необходимости загрузить и установить cygwin изначально не выглядела слишком привлекательной, я решил попробовать, поскольку у меня не было другого места.
Cygwin
Cygwin ... ну, позвольте мне процитировать прямо с сайта Cygwin:
`` Cygwin - это Linux-подобная среда для Windows. Он состоит из двух частей:
DLL (cygwin1.dll), которая действует как уровень эмуляции API Linux, обеспечивая существенную функциональность API Linux. Коллекция инструментов, обеспечивающих внешний вид Linux.
В настоящее время библиотека Cygwin DLL работает со всеми последними, коммерчески выпускаемыми 32-разрядными и 64-разрядными версиями Windows x86, за исключением Windows CE .`
Итак, он позволяет вам работать в среде типа Linux ... звучит гораздо более многообещающе для различных модулей Net :: *, на которые я смотрел.
Кроме того, после установки базового ядра Cygwin вы можете загружать и устанавливать целый ряд других полезностей, включая perl!
Итак, я приступил к установке cygwin, загрузив файл 'setup.exe' с домашней страницы cygwin и запустив его на моем ПК.
Cygwin предоставляет интуитивно понятный графический интерфейс, позволяющий выбрать зеркало для загрузки файлов и пакеты, которые вы хотите загрузить.
Вот пакеты, которые я установил, помимо базовых пакетов cygwin, установленных для вас:
НКУ-жильный
GnuPG
делать
ncftpget
OpenSSH
Perl
жемчужно-ExtUtils
Wget
застежка-молния
Вы можете установить другие (дополнительно), если хотите, но они сделали всю работу за меня.
* * Perl тысяча сорок-девять
После того, как я установил cygwin (включая включенный в него дистрибутив perl), я был полностью готов добавить модули, которые я хотел попробовать использовать (например, Net :: SSH :: Appliance).
Если вы знакомы с perl в системах Unix, то вы, вероятно, очень хорошо знакомы с оболочкой CPAN для добавления модулей в ваш дистрибутив perl. Под cygwin процесс точно такой же.
Если вы привыкли использовать версию Perl Activestate, вы, вероятно, привыкли использовать диспетчер Activestate PPM для добавления новых модулей в Perl.Что ж, плохая новость заключается в том, что в Cygwin у вас нет менеджера PPM, и вы должны использовать оболочку CPAN, которую немного сложнее использовать, если вы к ней не привыкли.Хорошая новость заключается в том, что у вас будет доступ к гораздо большему количеству Perl-модулей!
Когда вы установите Cygwin, он поместит значок где-нибудь (на рабочем столе, на панели быстрого доступа или в меню Пуск), чтобы вы моглиможет запустить оболочку cygwin (она выглядит примерно так:
Если вы щелкнете по значку оболочки, откроется приятная оболочка cygwin, в которой вы можете вводить различные команды. Вы можете думать о ней как о UnixОболочка для всех намерений и целей.
Чтобы загрузить нужные вам модули perl, вам нужно ввести «cpan» в командной строке, что позволит вам загружать новые модули в ваш дистрибутив perl.
Теперь, когда вы впервые зайдете в оболочку CPAN, она задаст вам множество довольно неловких вопросов о том, где находятся различные утилиты и какое зеркало вы хотели бы использовать. В основном, если вы установилиМодули, которые я рекомендовал для Cygwin, вы можете принять значения по умолчанию. (Зеркало, которое вы должны будете выяснить для себя - это зависит от того, гдев мире, в котором вы находитесь).
Единственный параметр, который я бы порекомендовал вам изменить по умолчанию, это вопрос о том, следует ли вам «задавать или следовать» для обязательных модулей - я бы выбрал «следовать»чтобы сэкономить массу хлопот.
После того, как у вас открыта оболочка cpan (вы можете сказать, что теперь у вас есть приглашение 'cpan>'), вам нужно ввести следующие команды для загрузки в некоторые модули perlчто вам понадобится:
установить LWP (принять все значения по умолчанию для любых заданных вопросов) установить Net :: Appliance :: Session
Когда вы введете эти команды, вы увидите, что многое всплываетэкран как модули для вас установлен.
Запуск сценариев
Что ж, на данный момент мы совершили довольно бурное путешествие, установив cygwin и perl на вашу платформу, но вы должнытеперь можно запускать некоторые сценарии perl.
Мы установили модуль Net :: Appliance :: Session в ваш дистрибутив perl, чтобы мы могли запускать perl scripts, которые будут использовать его для передачи нам сеансов Telnet или SSH на целевое устройство.
Поскольку мы работаем в среде cygwin, теперь мы можем использовать этот модуль на платформе Windows - что мы не могли сделатьпросто установив Activestate Perl, или даже скомпилировав нашу собственную версию Perl под Windows.Итак, теперь мы МОЖЕМ запустить perl-скрипты, которые позволят нам выполнять сеансы SSH с сетевыми устройствами, которые поддерживают только SSH.
Вы можете задаться вопросом: `` означает ли это, что я должен запускать свои perl-скрипты изоболочка cygwin каждый раз, когда мне нужно их запустить?Что ж, хорошая новость в том, что нет, ты не ..!Пока вы вызываете исполняемый файл cygwin perl для запуска вашего скрипта, он будет нормально работать из командной строки DOS (или системного планировщика!).Таким образом, это будет работать нормально:
c: \ c: \ cygwin \ bin \ perl.exe myscript.pl
Во всяком случае, я думаю, этого достаточно, чтобы вы знали, как я взломал мой конкретныйвопрос.Я надеюсь рассказать обо всем этом чуть более подробно в будущих статьях, а также предоставить дополнительную информацию о том, как использовать невероятно полезный модуль Net :: Appliance :: Session для создания некоторых полезных сценариев для управления и настройки ваших сетевых устройств.
http://perlwin32ssh.blogspot.com/2007/07/test_4418.html