2010-09-11 12 views
7

¿Alguien puede sugerir una manera muy simple de usar Net :: SSH :: Perl en Windows sin todos esos hacks cygwin y todo?¿Cómo configuramos SSH usando Perl en Windows?

Cada vez que estoy tratando de instalar los módulos que me va a llevar a algunos otros módulos dependientes y el proceso parecía interminable ..

Gracias de antemano

+0

Strawberry Perl o ActiveState? (u * otro *?) – mob

+0

... ¿o tal vez Cygwin Perl? – bart

+0

He preguntado por todas partes y me han dicho que es posible que desee examinar [Net :: SSH2] (http://cpan.uwinnipeg.ca/dist/Net-SSH2). Paquetes de PPM disponibles desde ese sitio. – bart

Respuesta

7

Aquí hay un post sobre cómo hacerlo que encontré.

Recientemente tuve un proyecto que requería un script para realizar una sesión SSH a un dispositivo Cisco y realizar algunos cambios de configuración. Mi lenguaje de scripting favorito es, por supuesto, perl.

Anteriormente escribí guiones usando el módulo Net :: Telnet que haría Telnet a un dispositivo, detecté varias indicaciones del dispositivo y envié comandos al dispositivo para cambiar su configuración. Entonces, pensé que este sería un caso bastante sencillo de encontrar un módulo similar adecuado que use SSH en lugar de Telnet.

La otra cosa que debo mencionar es que generalmente estoy obligado a usar plataformas Win32 (es decir, Windows 200, 2003, XP) debido al hecho de que la mayoría de los sitios cliente en los que trabajo actualmente no usan Unix (o Linux) ... lo cual es una verdadera lástima en mi opinión, pero no configuro las políticas corporativas de mis clientes.

Una mirada inicial de los módulos de perl disponibles reveló una serie de módulos que parecía ser justo lo que necesitaba:

Net :: :: Appliance Sesión Net :: SSH :: W32Perl Net :: SSH

Así que le dije a mi jefe, 'Sí, no hay problema', y me puse a juntar un script para SSH en un dispositivo remoto y le envié algunos comandos para cambiar su configuración.

Después de aproximadamente un día de probar varios módulos, pensé: '¡Mmmm, tal vez esto no va a ser tan fácil como pensaba!'

Cada uno de los módulos que he visto parece tener un problema cuando se trata de usarlo en un entorno de Windows. En resumen, estos son los temas que he encontrado con cada módulo:

* 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 

Por lo tanto, en este punto, yo estaba empezando a pensar que tal vez esto no iba a funcionar en absoluto en Windows ....

Luego, recordé haber visto una publicación en Perl Traficantes donde alguien mencionó que habían usado Perl en cygwin para ejecutar uno de los módulos Net :: *.

Así que, aunque la idea de tener que descargar e instalar cygwin inicialmente no parecía muy atractiva, pensé que lo probaría ya que no tenía a dónde ir.

Cygwin

Cygwin es ... bueno, permítanme citar directamente desde el sitio web de cygwin:

`` Cygwin es un entorno Linux como para Windows. Consta de dos partes:

Una DLL (cygwin1.dll) que actúa como una capa de emulación API de Linux que proporciona una funcionalidad sustancial de la API de Linux. Una colección de herramientas que proporcionan apariencia y sensación de Linux.

El DLL de Cygwin actualmente trabaja con toda reciente, lanzado comercialmente x86 de 32 bits y 64 bits de Windows, con la excepción de la de Windows CE.``

Por lo tanto, le permite correr en una de tipo Linux entorno ... suena mucho más prometedor para los diversos módulos Net :: * que había estado viendo.

Además, una vez que el núcleo básico de cygwin está instalado, le permite descargar e instalar toda una serie de otras cosas, ¡incluido perl!

Así que me puse a instalar cygwin descargando el archivo 'setup.exe' de la página de inicio de cygwin y ejecutándolo en mi PC.

Cygwin proporciona una interfaz gráfica de usuario (GUI) a prueba de fallas que le permite seleccionar un espejo para descargar archivos y qué paquetes desea descargar.

Éstos son los paquetes que he instalado más allá de los paquetes de Cygwin centrales básicos que se instalan para usted:

gcc-core GnuPG hacer ncftpget openSSH Perl perl- ExtUtils wget postal

Puede instalar otros (además) si lo desea, pero estos hicieron el trabajo por mí.

Perl

Una vez que había instalado cygwin (incluyendo la distribución de Perl que he incluido), estaba todo preparado para agregar en los módulos que quería probar a utilizar (por ejemplo Net :: SSH :: Appliance) .

Si está familiarizado con Perl en sistemas Unix, entonces probablemente esté muy familiarizado con el shell CPAN para agregar módulos a su distribución perl. Bajo cygwin, el proceso es exactamente el mismo.

Si está acostumbrado a utilizar la versión de Perl de Activestate, probablemente esté acostumbrado a usar el administrador de Activestate PPM para agregar nuevos módulos a perl. Bueno, la mala noticia es que bajo cygwin, no tienes un administrador PPM, y tienes que usar el shell CPAN, que es un poco más complicado de usar si no estás acostumbrado. ¡Sin embargo, la buena noticia es que tendrá acceso a muchos más módulos perl!

Al instalar cygwin, se habrá puesto un icono en alguna parte (ya sea en el escritorio, barra de quicklauch o el menú de inicio) para que pueda lanzar la cáscara cygwin (se ve algo como esto:

Si hace clic En el ícono del intérprete de comandos, obtendrá un buen shell cygwin abierto donde puede escribir varios comandos. Puede pensarlo como un intérprete de comandos de Unix para todos los propósitos.

Para cargar los módulos perl, necesitará , debe ingresar 'cpan' en el símbolo del sistema. Esto le permitirá cargar nuevos módulos en su distribución perl.

Ahora, la primera vez que ingresa al shell de CPAN, le hará muchas preguntas bastante incómodas sobre dónde se encuentran varias utilidades y qué mirror desea usar. En general, si ha instalado los módulos que recomendé para cygwin, puede aceptar los valores predeterminados. (El espejo tendrás que descubrirlo tú mismo, depende de en qué parte del mundo te encuentres).

La única configuración que recomendaría cambiar de la predeterminada es la pregunta sobre si se debe 'preguntar' o seguir 'para módulos de requisitos previos. Me gustaría' seguir 'para ahorrar mucha molestia.

Una vez que tenga su shell CPAN abierta (se puede decir, porque ahora tiene un 'CPAN>' del sistema), es necesario introducir los siguientes comandos para cargar en algunos módulos de Perl que se necesita:

instalar LWP (aceptar todos los valores predeterminados a cualquier pregunta hecha) instalar Net :: :: Appliance Sesión

al entrar en estos comandos, verá un montón de cosas volando hasta la pantalla como los módulos se instalan para usted.

secuencias que se ejecutan

Pues bien, en este punto, hemos tomado una excursión en lugar torbellino a través de conseguir cygwin y Perl Instalada en su plataforma, pero debe estar ahora en condiciones de ejecutar algunos scripts de Perl.

Instalamos el módulo Net :: Appliance :: Session en su distribución de perl, de modo que podamos ejecutar scripts Perl que lo utilizarán para proporcionarnos sesiones de Telnet o SSH a un dispositivo de destino.

Como estamos bajo el entorno cygwin, ahora podemos usar este módulo en una plataforma Windows, algo que no podríamos hacer instalando Activestate perl, o incluso compilando nuestra propia versión de perl en Windows. Entonces, ahora, PODEMOS ejecutar scripts Perl que nos permitirán realizar sesiones SSH a dispositivos de red que solo admiten SSH.

Usted se estará preguntando: `` ¿eso significa que tengo que ejecutar mis scripts Perl desde el shell cygwin cada vez que necesito ejecutarlos? ''. Bueno, la buena noticia es que no, ¡tú no! Siempre que llame al ejecutable de cygwin perl para ejecutar el script, se ejecutará correctamente desde un indicador de DOS (¡o desde el programador del sistema!). Por lo tanto, esto funcionaría bien:

c: \ c: \ cygwin \ bin \ perl.exe myscript.pl

De todos modos, supongo que eso es suficiente para hacerle saber cómo me rompí tema en particular. Espero cubrir todo esto con un poco más de detalle en aritcles futuros, así como proporcionar más información sobre cómo usar el increíblemente útil módulo Net :: Appliance :: Session para crear algunos scripts útiles para controlar y configurar sus dispositivos de red.

http://perlwin32ssh.blogspot.com/2007/07/test_4418.html

+0

+2 pero no puedo porque puedo votar solo una vez. –

2

Para ActiveState Perl, probablemente usted puede intentar para el módulo Net :: SSH2. Intenté con un par de ejemplos en línea y funcionó para mí.

Puede seguir los siguientes recursos para instalar y ejecutar un ejemplo de ejemplo usando Net :: SSH2.

Usar este repositorio para instalar Net :: SSH2 http://theoryx5.uwinnipeg.ca/ppms/

par de ejemplos: http://www.perlmonks.org/?node_id=569657

la esperanza que esto funcionará para usted. Lo intenté y funcionó para mí.

2

La respuesta sobre el uso de Perl desde dentro de Cygwin y luego llamarlo desde la línea de comandos de Windows es la respuesta correcta. GRACIAS MUCHO POR SU ESFUERZO!

Sin embargo, este método para llamar a una instancia de Perl se ejecuta en Cygwin desde la línea de comandos de Windows es no siempre óptimo:

c: \ cygwin \ bin \ perl.exe myscript.pl

Esa técnica funcionará con algunos scripts de Perl pero no con todos. Me estaba tratando de usar NET: SSH: EXPECT y el método login(). Abortaría con errores extraños.

Una mejor manera de llamar la instancia de Perl se ejecuta en Cygwin desde el símbolo del sistema de Windows es la siguiente:

c: \ cygwin \ bin \ fiesta --login -c 'Perl myscript.pl'

Esto parece ejecutar la secuencia de comandos de Perl por completo dentro del entorno de Cygwin e incluso compilar scripts de Perl o aquellos con muchas dependencias o que no sean capaces de tratar con nombres de ruta de estilo de MSDOS, seguirán ejecutándose. Todavía puede devolver el resultado del script de Perl a la ventana de comandos de Windows, por ejemplo, usando print() desde su script Perl.

Cuestiones relacionadas