2009-04-21 26 views
6

Tengo un script de AIX que me gustaría ejecutar desde una aplicación de .NET. No me opongo a lanzar un archivo por lotes de Windows si eso me da mejores opciones.Cómo ejecutar un script de shell de Unix desde Windows

La mayor parte de lo que he visto en Google se relaciona con el uso de una herramienta como rsh o Plink, o el uso de ssh o telnet. No tengo acceso a rsh ni a Plink (aunque tengo PuTTY y probablemente pueda obtener Plink). Puedo enviar ssh al recuadro de AIX, pero Telnet está deshabilitado.

Necesitaré una forma de pasar las credenciales del usuario.

¿Alguien puede recomendar la mejor manera de llamar a un script de Unix desde una aplicación de Windows?

Respuesta

5

Instalar cygwin. Incluye la función ssh. Configure sus claves ssh: clave privada en Windows, clave pública en el recuadro AIX. Luego puede ejecutar "ssh user @ aixbox script-on-aix-box.sh".

Es mejor tener la secuencia de comandos en AIX, aunque puede usar scp para copiar primero el archivo a AIX. Pasar una larga línea de comandos a través de ssh es propenso a errores, no debido a que sea ssh, sino porque conseguir escapes configurados para pasar de .NET a ssh a ksh o lo que sea que se ejecute en AIX es doloroso. Lo mejor es mantener todo lo más simple posible, de preferencia solo un comando que luego puede ser un script que hace varias cosas.

para responder a sus comentarios, que sería largo para otro comentario:

(1) ¿Por qué es mejor utilizar la utilidad ssh de cygwin lugar de la utilidad ssh de Windows?

a) Lo sé mejor, así que no sabría sugerir ninguna utilidad de Windows ssh (ni siquiera sabía que Windows venía con una utilidad ssh), y b) la utilidad ssh de cygwin tiene una mejor oportunidad de ser ssh estándar con toda la familiaridad nos enloquece unix freaks. :-)

(2) ¿Para qué sirven las llaves? ¿Eso permite la autenticación multiplataforma, o es solo una forma de encriptar de forma asimétrica la contraseña?

Las teclas permiten el acceso sin contraseña. Si configura su clave privada sin contraseña (generalmente no recomendada, pero si puede mantener su máquina segura, funciona bien para herramientas automatizadas), su herramienta podrá simplemente pasar sin ningún tipo de solicitud de contraseña, esto hace las cosas mucho más fáciles. .

+2

Gracias por la respuesta. Dos preguntas relacionadas: (1) ¿Por qué es mejor usar la utilidad ssh de cygwin en lugar de la utilidad ssh de Windows? (2) ¿Para qué son las llaves? ¿Eso permite la autenticación multiplataforma, o es solo una forma de encriptar de forma asimétrica la contraseña? –

+0

En realidad, no creo que esté integrado en Windows (mala suposición de mi parte). Creo que es una utilidad de terceros que hemos instalado. Si tengo problemas con el ssh, tengo que probaré cygwin. Gracias de nuevo. –

3

[email protected] ssh "gato somefile.log"

(donde somefile.log gato se reemplaza con el comando que desea ejecutar)

Creo que la manera más fácil de hacer que lo haría debe llamar a su programa ssh (ya sea ssh, plink u otra cosa) desde un archivo de proceso por lotes llamado desde su aplicación .net.

1

En segundo lugar la sugerencia de cygwin, pero otra opción que usted tiene es Services for UNIX de Microsoft.

1

Lo que haría, sería configurar una interfaz de servicio (https) en el recuadro de AIX que la aplicación .Net puede ejecutar. Esto es realmente una cuestión de cómo desea exponer su secuencia de comandos en el cuadro de AIX. IMHO Java + Tomcat sería lo suficientemente fácil como para configurarlo en la caja de AIX, solo asegúrese de limitar su exposición y/o requiera un ticket de autenticación para el servicio de AIX. Esto no es tanto una pregunta de .Net como una decisión arquitectónica.

--edit--

Como otros han sugerido, puede utilizar Cygwin también. También hay componentes SSH para .Net que puede usar, que pueden ser más transparentes para usted. (Commercial y FOSS)

+0

También me gusta la sugerencia de servicio de AIX. – Tanktalus

Cuestiones relacionadas