script recursivo hacer ejemplos ejecutar como comandos comando linux windows automation putty

recursivo - Automatizar el comando de ejecución en Linux desde Windows usando PuTTY



ejecutar bash linux (8)

Tengo un escenario donde necesito ejecutar un comando linux shell frecuentemente (con diferentes nombres de archivos) desde Windows. Estoy usando PuTTY y WinSCP para hacer eso (requiere nombre de usuario y contraseña). El archivo se copia a una carpeta predefinida en la máquina Linux a través de WinSCP y luego el comando se ejecuta desde PuTTY. ¿Hay alguna manera de automatizar esto a través de un programa? Lo ideal sería hacer clic derecho en el archivo desde Windows y emitir el comando que copiaría el archivo a la máquina remota y ejecutar el comando predefinido (en PuTTy) con el nombre de archivo como argumento.


Aquí hay una solución totalmente lista para usar.

  1. Instalar AutoHotKey (ahk)
  2. Asigna el script a una clave (p. Ej., F9)
  3. En el script ahk, a) Ftp el archivo de comandos (.ksh) a la máquina de Linux

    b) Use plink como a continuación. Plink debe instalarse si tiene masilla.

plink nombre de sesión -l nombre de usuario -pw contraseña test.ksh

o

plink -ssh ejemplo.com -l nombre de usuario -pw contraseña test.ksh

Todos los pasos se realizarán en secuencia cada vez que presione F9 en Windows.


Código:

using System; using System.Diagnostics; namespace playSound { class Program { public static void Main(string[] args) { Console.WriteLine(args[0]); Process amixerMediaProcess = new Process(); amixerMediaProcess.StartInfo.CreateNoWindow = false; amixerMediaProcess.StartInfo.UseShellExecute = false; amixerMediaProcess.StartInfo.ErrorDialog = false; amixerMediaProcess.StartInfo.RedirectStandardOutput = false; amixerMediaProcess.StartInfo.RedirectStandardInput = false; amixerMediaProcess.StartInfo.RedirectStandardError = false; amixerMediaProcess.EnableRaisingEvents = true; amixerMediaProcess.StartInfo.Arguments = string.Format("{0}","-ssh username@"+args[0]+" -pw password -m commands.txt"); amixerMediaProcess.StartInfo.FileName = "plink.exe"; amixerMediaProcess.Start(); Console.Write("Presskey to continue . . . "); Console.ReadKey(true); } }

}

Sample commands.txt:

PD

Enlace: https://huseyincakir.wordpress.com/2015/08/27/send-commands-to-a-remote-device-over-puttyssh-putty-send-command-from-command-line/


La masilla usualmente viene con la utilidad "plink".
Este es esencialmente el comando de línea de comando "ssh" implementado como un .exe de Windows.
Está bastante bien documentado en el manual de masilla en "Uso de la herramienta de línea de comando plink".

Solo tiene que ajustar un comando como:

plink root@myserver /etc/backups/do-backup.sh

en un script .bat.


Podría haber problemas de seguridad con métodos comunes para el inicio de sesión automático. Una de las maneras más fáciles se documenta a continuación:

Y en cuanto a la parte que ejecuta el comando In putty UI, Connection> SSH> hay un campo para comando remoto.

4.17 El panel SSH

El panel SSH le permite configurar opciones que solo se aplican a sesiones SSH.

4.17.1 Ejecutando un comando específico en el servidor

En SSH, no tiene que ejecutar una sesión de shell general en el servidor. En cambio, puede elegir ejecutar un solo comando específico (como un agente de usuario de correo, por ejemplo). Si desea hacer esto, ingrese el comando en el cuadro "Comando remoto". http://the.earth.li/~sgtatham/putty/0.53/htmldoc/Chapter4.html

en resumen, sus respuestas podrían ser similares al texto a continuación:


Pruebe MtPutty , puede automatizar el inicio de sesión ssh en él. Es una gran herramienta especialmente si necesita iniciar sesión en múltiples servidores muchas veces. Pruébalo here

Otra herramienta que vale la pena probar es TeraTerm . Es realmente fácil de usar para las cosas de automatización ssh. Puedes obtenerlo here . Pero mi favorito siempre es MtPutty.


Puede crear una sesión de masilla y cargar automáticamente la secuencia de comandos en el servidor al iniciar la sesión:

putty -load "sessionName"

En el comando remoto, señale el script remoto.


Puede escribir un script TCL y establecer una sesión SSH en ese equipo Linux y emitir comandos automáticamente. Consulte http://wiki.tcl.tk/11542 para obtener un breve tutorial.


Puede hacer ambas tareas (la carga y la ejecución del comando) usando WinSCP. Use script WinSCP como:

option batch abort option confirm off open your_session put %1% call script.sh exit

Referencia para el comando de call :
https://winscp.net/eng/docs/scriptcommand_call

Referencia para la sintaxis %1% :
https://winscp.net/eng/docs/scripting#syntax

A continuación, puede ejecutar el script como:

winscp.exe /console /script=script_path/upload.txt /parameter file_to_upload.dat

En realidad, puede poner un atajo al comando anterior en el menú Enviar a del Explorador de Windows, de modo que puede simplemente hacer clic con el botón derecho en cualquier archivo y acceder a Enviar a> Cargar usando WinSCP y ejecutar comando remoto (= nombre del atajo )

Para eso, vaya a la carpeta %USERPROFILE%/SendTo y cree un acceso directo con el siguiente objetivo:

winscp_path/winscp.exe /console /script=script_path/upload.txt /parameter %1

Ver Crear entrada en el menú "Enviar a" del Explorador .