GNU/Linux >> Tutoriales Linux >  >> Linux

10 ejemplos de PuTTY PLINK para automatizar comandos remotos de Linux desde archivos por lotes de Windows

Plink significa PuTTY Link.

Plink es una utilidad de línea de comandos complementaria para PuTTY.

En un nivel muy alto:

  • Utilice PuTTY para una sesión SSH interactiva desde sus servidores Windows a Linux
  • Utilice Plink para sesiones SSH no interactivas para ejecutar comandos remotos de Linux con fines de automatización desde su Windows


En este tutorial, analizaremos lo siguiente:

  1. Ejecutar plink desde el símbolo del sistema
  2. Sesión SSH interactiva de Plink
  3. Plink sesión SSH no interactiva para ejecutar un comando remoto
  4. Ejecute varios comandos de Linux desde un archivo de Windows
  5. Especifique el protocolo de conexión
  6. Especifique la contraseña SSH como argumento Plink
  7. Depurar problemas de Plink
  8. Especifique el puerto SSH como opción Plink
  9. Archivos de registro de Plink para conexiones SSH
  10. Especifique el protocolo SSH (SSH-1 o SSH-2)
  11. Especifique el protocolo IP (IPv4 o IPv6)
  12. Usar archivo de clave privada para la autenticación con Plink
  13. Opciones adicionales para habilitar y deshabilitar Plink SSH
  14. Huella digital y HostKey con Plink
  15. Opción Plink -batch para archivos por lotes de Windows

Primero, descargue el ejecutable plink desde aquí.

Si aún no tiene PuTTY instalado en su máquina, asegúrese de descargar también el ejecutable PuTTY junto con plink.

Si tiene una computadora portátil con Windows de 32 bits, asegúrese de descargar la versión de plink de 32 bits. Si no, descarga la versión de 64 bits.

1. Inicie plink desde el símbolo del sistema

No puede simplemente hacer doble clic en plink.exe para iniciarlo. Dado que esta es una utilidad solo de línea de comandos (sin GUI), primero debe iniciar el símbolo del sistema de Windows.

Para esto, haga clic en el menú de inicio en su ventana y escriba "cmd.exe" en el cuadro de búsqueda y presione Intro, esto iniciará el símbolo del sistema de Windows.

Además, dependiendo de dónde haya descargado plink.exe, es posible que deba modificar la variable PATH de Windows en consecuencia.

Vaya a la ventana de "Propiedades del sistema", haga clic en "Variables de entorno", seleccione Variable de ruta y agregue el directorio donde se encuentra el plink.exe aquí.

O simplemente puede configurar su variable PATH como se muestra a continuación. En el siguiente ejemplo, descargué plink.exe en el directorio C:\Downloads.

set PATH=%PATH%;C:\Downloads

A continuación, escriba plink en el símbolo del sistema, esto mostrará las diversas opciones disponibles.

2. Sesión SSH interactiva de Plink

La siguiente es la sintaxis básica para plink:

plink [options] connection [command]

En la sintaxis anterior:

  • opciones:puede pasar varias opciones a plink. Esto es opcional.
  • conexión:tendrá la información de conexión del servidor Linux al que desea conectarse. En los siguientes ejemplos se explican varios métodos de conexión.
  • comando:este es el comando que debe ejecutarse en el servidor Linux remoto. Esto es opcional.

Si bien el comando es opcional, cuando no lo da, mostrará una sesión interactiva sin procesar, que tendrá muchos caracteres no imprimibles y no legibles en la pantalla. Como se explicó anteriormente, plink no está destinado a ser utilizado como una sesión interactiva. Use PuTTY para una sesión interactiva.

Por ahora, veamos varios métodos para usar la conexión.

Primero, puede simplemente dar la dirección IP del servidor remoto. Esto le pedirá el nombre de usuario y la contraseña para iniciar sesión.

C:\>plink 192.168.101.1
login as: root
[email protected]'s password:

O también puede usar el nombre de usuario usando el símbolo @ como se muestra a continuación. Esto solo pedirá la contraseña, ya que hemos especificado el nombre de usuario.

C:\>plink [email protected]
Using username "root".
[email protected]'s password:

También puede pasar el nombre de usuario usando la opción -l como se muestra a continuación:

C:\>plink 192.168.101.1 -l mysql

También puede usar el nombre de una sesión de masilla existente. En este ejemplo, estoy usando la sesión de masilla guardada existente llamada "devdb". Esta es la forma recomendada de uso, ya que puede traer toda la información de configuración de PuTTY aquí para esta sesión "devdb" en particular.

C:\>plink devdb
Using username "root".
[email protected]'s password:

La siguiente carga es exactamente igual que la anterior.

C:\>plink -load devdb
Using username "root".
[email protected]'s password:

Como puede ver a continuación, una vez que inicie sesión, obtendrá un símbolo del sistema. Pero hacer cualquier cosa aquí mostrará algunos caracteres que no son fáciles de usar.

C:\>plink devdb
Using username "root".
[email protected]'s password:
?]0;root@devdb:~[root@devdb ~]#
?]0;root@devdb:~[root@devdb ~]#
?]0;root@devdb:~[root@devdb ~]# ?[Kls -altr
total 326432
drwx------.  2 root root      4096 Jan 23  2016 ?[01;34m.ssh?[0m
drwxr-xr-x.  2 root root      4096 May  9  2016 ?[01;3Documents?[0m
drwxr-xr-x.  2 root root      4096 May  8 12:41 ?[01;3Downloads?[0m
?[m?]0;root@devdb:~[root@devdb ~]#

Nuevamente, para una sesión SSH interactiva, use PuTTY.

En una nota relacionada, incluso si ha estado usando PuTTY durante un tiempo, es posible que algunos consejos de aquí le resulten útiles:10 consejos y trucos impresionantes de PuTTY que probablemente no sabía

3. Plink Sesión SSH no interactiva para ejecutar un comando remoto

Usando plink, desde Windows, puede ejecutar un comando en el servidor Linux sin ninguna interacción del usuario y simplemente mostrar el resultado.

Para ello, pase el comando como último argumento al plink como se muestra a continuación.

En el siguiente ejemplo, ejecutará el comando "crontab -l" en el servidor remoto y mostrará el resultado.

C:\>plink [email protected] crontab -l
no crontab for root

Si desea ejecutar varios comandos, agrúpelos como se muestra a continuación.

C:\>plink [email protected] (hostname;crontab -l)
devdb.thegeekstuff.com
no crontab for root

Lo siguiente ejecutará el shellscript db-backup.sh en el servidor Linux remoto. Pero, está iniciando esto desde su máquina con Windows.

plink [email protected] /root/bin/db-backup.sh

Algunos puntos a tener en cuenta:

  • Si el comando anterior solicita una contraseña y no desea que eso suceda, debe configurar la autenticación de clave pública-privada de manera adecuada para que el servidor Linux remoto no solicite la contraseña.
  • También puede pasar la contraseña como una opción de línea de comandos para plink como se muestra en uno de los ejemplos a continuación.
  • Además, si lo anterior muestra un mensaje de error sobre un protocolo no válido, entonces debe pasar el protocolo apropiado como se muestra en el siguiente ejemplo.

4. Ejecutar múltiples comandos de Linux desde un archivo de Windows

En lugar de especificar todos los comandos que se ejecutarán en el servidor Linux remoto en la línea de comandos de plink, también puede ponerlos en un archivo de texto y especificar el archivo como parámetro para el plink.

Por ejemplo, cree el siguiente archivo llamado commands.txt en su Windows.

C:\>type commands.txt
hostname
service mysql stop
yum -y install httpd
service mysql start
service httpd start
crontab -l

Ahora, para ejecutar todos los comandos anteriores en el servidor Linux remoto uno por uno en una secuencia, ejecute el siguiente comando plink en su computadora portátil con Windows.

C:\>plink [email protected] -m C:\commands.txt

5. Especificar protocolo de conexión

Plink permite los siguientes protocolos:SSH, Telnet, Inicio de sesión remoto (rlogin), Raw, Conexión en serie

El más popular y el predeterminado es SSH. Use -ssh como se muestra a continuación.

C:\>plink -ssh [email protected]

Para Telnet:

C:\>plink -telnet [email protected]

Para inicio de sesión remoto usando rlogin:

C:\>plink -rlogin [email protected]

Para crudo:

C:\>plink -raw [email protected]
SSH-2.0-OpenSSH_5.3

Si está tratando de especificar un protocolo en particular y obtiene el error "ERROR FATAL:Error de red:Conexión rechazada", significa que el servidor remoto no es compatible con el protocolo especificado.

Si no desea especificar el protocolo en la línea de comando:

  • Puede usar una sesión de PuTTY guardada que ya tiene el protocolo definido para esa sesión en particular.
  • O bien, puede usar la variable de entorno de Windows llamada PLINK_PROTOCOL y establecer el valor correspondiente, que utilizará plink.

6. Especifique la contraseña SSH como argumento Plink

Si no tiene la configuración de autenticación basada en claves, puede pasar la contraseña como un parámetro en la línea de comandos. No hace falta decir que este método no se recomienda.

Esto se conectará al servidor como root usando la contraseña especificada por la opción -pw, y ejecutará todos los comandos de Linux dados y mostrará el resultado en el símbolo del sistema de Windows.

C:\>plink [email protected] -pw SecretRootPwd (date;hostname;ls -l)

Por supuesto, el método sencillo es usar una sesión de PuTTY guardada (por ejemplo, devdb) en lugar de especificar el nombre de usuario y la dirección IP como se muestra a continuación.

C:\>plink devdb -pw SecretRootPwd (date;hostname;ls -l)

7. Depurar problemas de Plink

Primero, asegúrese de tener la última versión de plink. Utilice la opción -V (V mayúscula) como se muestra a continuación. La versión estable actual es 0.69

C:\>plink -V
plink: Release 0.69
Build platform: 64-bit Windows
Compiler: Visual Studio 2015 / MSVC++ 14.0 (_MSC_VER=1900)
Source commit: b1829b81b5c0d12dcc91f6b50b0b4d83c3df6a8e

A continuación, use la opción -v (v en minúsculas) como se muestra a continuación para obtener una salida más detallada.

C:\>plink -v devdb service httpd restart
Connecting to 192.168.101.1 port 22
We claim version: SSH-2.0-PuTTY_Release_0.69
Server version: SSH-2.0-OpenSSH_5.3
We believe remote version has SSH-2 channel request bug
Using SSH protocol version 2
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-256
Server also has ssh-dss host key, but we don't know it
Host key fingerprint is:
ssh-rsa 2048 2f:d2:c1:7f:db:a1:16:21:d2:f4:31:f9:ae:96:be:89
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Using username "root".
Using SSPI from SECUR32.DLL
Attempting GSSAPI authentication
GSSAPI authentication request refused
Sent password
Access granted
Opening session as main channel
Opened main channel
Started a shell/command
..

Server sent command exit status 0
Disconnected: All channels closed

8. Especifique el puerto SSH como opción Plink

De forma predeterminada para SSH, se conectará al puerto 22. Pero, en su servidor Linux, si SSH está configurado para ejecutarse en un puerto diferente, use la opción -P en plink para especificar el puerto.

En el siguiente ejemplo, plink se conectará al servidor Linux remoto en el puerto 25.

C:\>plink [email protected] -P 25 crontab -l

Cuando usa una sesión PuTTY guardada y la opción -P, en lugar de usar el puerto de la sesión guardada, usará el puerto dado.

C:\>plink devdb -P 25 crontab -l

9. Plink Archivos de registro para conexiones SSH

Para el protocolo SSH en Plink, hay un par de opciones de registro útiles.

La siguiente opción –sshlog guardará los registros en el archivo dado (sshlog.txt).

C:\>plink devdb -sshlog sshlog.txt (date;hostname;ls -l)

Este es el contenido parcial de la salida sshlog.txt

=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2017.05.11 11:40:57 =~=~=~=~=~=~=~=~=~=~=~=
Event Log: Writing new session log (SSH packets mode) to file: sshlog.txt
Event Log: Connecting to 192.168.101.1 port 22
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.69
Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: We believe remote version has SSH-2 channel request bug
Event Log: Using SSH protocol version 2
Outgoing packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
  00000000  ed 8e ff c9 d3 67 cf 95 0e 8f 1a 4d 6d 65 6f 25  .....g.....Mmeo%
  00000010  00 00 00 f0 63 75 72 76 65 32 35 35 31 39 2d 73  ....curve25519-s
......

Outgoing packet #0xc, type 96 / 0x60 (SSH2_MSG_CHANNEL_EOF)
  00000000  00 00 00 00                                      ....
Outgoing packet #0xd, type 97 / 0x61 (SSH2_MSG_CHANNEL_CLOSE)
  00000000  00 00 00 00                                      ....
Event Log: Disconnected: All channels closed

Para un registro más detallado, use la opción -sshrawlog. Tenga en cuenta que el tamaño del archivo de este será mayor que el anterior, ya que esto almacenará mucha más información en el archivo de registro.

Además, llevará más tiempo ejecutarlo que el comando anterior, ya que la opción sshrawlog recopila más información de registro que la opción sshlog normal.

C:\>plink devdb -sshrawlog sshrawlog.txt (date;hostname;ls -l)

10. Especifique el protocolo SSH (SSH-1 o SSH-2)

De forma predeterminada, utilizará el protocolo SSH-2, que también se puede especificar mediante la opción -2, como se muestra a continuación.

C:\>plink devdb -2 (hostname;ls -l)
devdb.thegeekstuff.com
total 326380

Para el protocolo SSH-1, use la opción -1 como se muestra a continuación. Si su servidor no lo admite, obtendrá el siguiente error.

C:\>plink devdb -pw -1 (hostname;ls -l)
FATAL ERROR: SSH protocol version 1 required by our configuration but not provided by server

11. Especifique el protocolo IP (IPv4 o IPv6)

De forma predeterminada, utilizará IPv4, que también se puede especificar mediante la opción -4, como se muestra a continuación.

C:\>plink devdb -4 (hostname;ls -l)

Para usar IPv6, use la opción 6 como se muestra a continuación.

C:\>plink devdb -6 (hostname;ls -l)

12. Usar archivo de clave privada para la autenticación con Plink

Use la opción -i para especificar la ubicación del archivo de clave privada que debe usarse para la autenticación.

En el siguiente ejemplo, utilizará el archivo devdb.ppk del directorio C:\Downloads.

C:\>plink -i "C:\Downloads\devdb.ppk" [email protected] hostname

Nota:Obtendrá "El servidor rechazó nuestra clave", si la clave dada no está configurada correctamente para usarse con su servidor Linux.

Si no se encuentra el archivo clave (por ejemplo, cuando proporciona un nombre de directorio incorrecto), obtendrá el siguiente error:

C:\>plink -i "D:\Data\devdb.ppk" [email protected] hostname
Unable to use key file "C:\Users\ramesh\Downloads\devdb.ppk" (unable to open file)
[email protected]'s password: 

Si especifica una clave que no tiene el formato adecuado, recibirá el siguiente mensaje de error.

C:\>plink -i "C:\Downloads\devdb.key" [email protected] hostname
Unable to use key file "C:\Downloads\devdb.key" (OpenSSH SSH-2 private key (old PEM format))

13. Opciones adicionales para habilitar y deshabilitar Plink SSH

También puede utilizar las siguientes opciones SSH de plink:

  • -X para habilitar el reenvío X11
  • -X para deshabilitar el reenvío X11
  • -A para habilitar el reenvío de agentes
  • -a para deshabilitar el reenvío de agentes
  • -t para habilitar la asignación de pty
  • -T para deshabilitar la asignación de pts
  • -noagent para deshabilitar el uso de Pageant
  • -agent para habilitar el uso de Pageant
  • -C para habilitar la compresión

14. Huella digital y HostKey con Plink

Use la opción -pgpfp que mostrará los detalles de la huella digital PGP para PuTTY. Por lo general, puede usar esto para establecer la confianza del ejecutable plink.exe con otro programa o ejecutable al que está tratando de conectarse.

C:\>plink -pgpfp
PuTTY Master Key as of 2015 (RSA, 4096-bit):
  440D E3B5 B7A1 CA85 B3CC  1718 AB58 5DC6 0467 6F7C

Original PuTTY Master Key (RSA, 1024-bit):
  8F 15 97 DA 25 30 AB 0D  88 D1 92 54 11 CF 0C 4C
Original PuTTY Master Key (DSA, 1024-bit):
  313C 3E76 4B74 C2C5 F2AE  83A8 4F5E 6DF5 6A93 B34E

Además, puede usar la clave de host en el plink para conectarse al servidor remoto en consecuencia usando la opción -hostkey.

C:\>plink devdb -hostkey aa:dd:b1:f1:f8:00:4c:36:63:ec:cf:92:16:e6:df:26 hostname

15. Opción Plink -batch para archivos por lotes de Windows

Si está ejecutando plink dentro de un archivo por lotes de Windows, se recomienda que utilice la opción -batch.

C:>plink -batch devdb [complex-linux-command]

En el ejemplo anterior, si el comando complex-linux falla, o solicita una entrada del usuario, o se cuelga, etc., entonces su secuencia de comandos de Windows Batch no estará esperando. En su lugar, plink simplemente abandonará el comando y el script por lotes fallará.

Esto es probablemente lo que esperaría que sucediera en lugar de que su trabajo de archivo por lotes de Windows simplemente esperara o colgara.

Por lo tanto, use la opción -batch en plink cuando esté escribiendo scripts por lotes de Windows usando plink.


Linux
  1. Comando SCP Linux:cómo transferir archivos SSH de remoto a local

  2. ¿Acceso a un sistema Osx remoto desde Osx, Linux, Windows?

  3. Comandos de búsqueda de Linux

  4. Conéctese a Linux desde Windows usando PuTTY

  5. Ejemplos de comandos diff en Linux

Comando lsof en Linux (10 ejemplos)

Comandos SSH en Linux con ejemplos de uso

Cambiar de Windows a Linux

Ejemplos de comandos Tmux para administrar múltiples sesiones de terminal en Linux

Cómo descargar archivos desde servidores Linux remotos

Cómo ejecutar el comando SUDO en WinSCP para transferir archivos de Windows a Linux