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.
- Instalar AutoHotKey (ahk)
- Asigna el script a una clave (p. Ej., F9)
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
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