
Necesito ejecutar un script (Tcl o lo que sea) en una máquina Unix remota, desde un shell de comandos (local) de Windows, y quiero que la salida estándar/stderr del script aparezca en la CLI de Windows. El código de salida también sería útil.
¿Es esto posible usando ssh (putty)? ¿O por algún otro medio?
Respuesta1
Este es el valor predeterminado para SSH. Si desea redirigir la salida de forma remota, coloque el símbolo de redirección (normalmente ">") dentro de las comillas del comando.
Por ejemplo:
ssh remote_host "ls > /tmp/file_on_remote_host.txt"
Para guardar la salida localmente en el host de Windows,
ssh remote_host "ls" > .\file_on_local_host.txt
Para combinar stderr de forma remota y guardarlo y stdout localmente,
ssh remote_host "ls 2>&1" > .\combined_output_on_local_host.txt
Respuesta2
Lo que estaba buscando es la patada lateral de Putty,plink.exe. A diferencia de PuTTY, que actúa como un emulador de terminal, plink
actúa como un programa CLI normal (no interactivo).
Al usarlo, podría hacer esto cmd.exe
y guardar localmente la salida del comando remoto.
\> plink remote_host "ls -l" > log.txt
Lo mejor de todo es que esto funciona parasshasí comoTelnet!
Sólo como referencia, estas son las opciones disponibles:
PuTTY Link: command-line connection utility
Release 0.59
Usage: plink [options] [user@]host [command]
("host" can also be a PuTTY saved session name)
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-v show verbose messages
-load sessname Load settings from saved session
-ssh -telnet -rlogin -raw
force use of a particular protocol
-P port connect to specified port
-l user connect with specified username
-batch disable all interactive prompts
The following options only apply to SSH connections:
-pw passw login with specified password
-D [listen-IP:]listen-port
Dynamic SOCKS-based port forwarding
-L [listen-IP:]listen-port:host:port
Forward local port to remote address
-R [listen-IP:]listen-port:host:port
Forward remote port to local address
-X -x enable / disable X11 forwarding
-A -a enable / disable agent forwarding
-t -T enable / disable pty allocation
-1 -2 force use of particular protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for authentication
-noagent disable use of Pageant
-agent enable use of Pageant
-m file read remote command(s) from file
-s remote command is an SSH subsystem (SSH-2 only)
-N don't start a shell/command (SSH-2 only)
-nc host:port
open tunnel in place of session (SSH-2 only)
Respuesta3
Sí, si utiliza el cliente PuTTY ssh, verá cualquier salida de línea de comando que produzca su secuencia de comandos. Para obtener el código de salida después de ejecutar el script, escriba:
echo $?
Respuesta4
Una respuesta más:
Guarde todos sus comandos de Linux encmdlist.txtarchivo y utilice el siguiente comando.
plink.exe -ssh -pw contraseña[correo electrónico protegido] salida.txt
contraseña==contraseña para el inicio de sesión del dispositivo
tu nombre==nombre de usuario para el inicio de sesión del dispositivo
1.2.3.4==dirección IP del dispositivo
Después de ejecutar este comando, todos sus comandos cmdlist.txt se ejecutarán en el dispositivo remoto y la salida se guardará en el archivo llamado salida.txt.
Asegúrese de mantener plink.exe y cmdlist.txt en el mismo directorio y de apuntar el indicador de dos al mismo directorio.