GNU/Linux >> Linux Esercitazione >  >> Linux

10 esempi PuTTY PLINK per automatizzare i comandi Linux remoti dai file batch di Windows

Plink sta per PuTTY Link.

Plink è un'utilità della riga di comando complementare per PuTTY.

Ad altissimo livello:

  • Usa PuTTY per sessioni SSH interattive dai tuoi server Windows a Linux
  • Usa Plink per sessioni SSH non interattive per eseguire comandi Linux remoti a scopo di automazione dal tuo Windows


In questo tutorial parleremo di quanto segue:

  1. Avvia plink dal prompt dei comandi
  2. Sessione SSH interattiva Plink
  3. Sessione SSH non interattiva Plink per eseguire un comando remoto
  4. Esegui più comandi Linux da un file Windows
  5. Specifica protocollo di connessione
  6. Specifica la password SSH come argomento Plink
  7. Debug dei problemi di Plink
  8. Specifica la porta SSH come opzione Plink
  9. File di registro Plink per connessioni SSH
  10. Specificare il protocollo SSH (SSH-1 o SSH-2)
  11. Specifica il protocollo IP (IPv4 o IPv6)
  12. Utilizza il file della chiave privata per l'autenticazione con Plink
  13. Opzioni di abilitazione e disabilitazione aggiuntive per Plink SSH
  14. Impronta digitale e HostKey con Plink
  15. Opzione Plink -batch per i file batch di Windows

Innanzitutto, scarica l'eseguibile plink da qui.

Se non hai già installato PuTTY sul tuo computer, assicurati di scaricare anche l'eseguibile putty insieme a plink.

Se hai un laptop Windows a 32 bit, assicurati di scaricare la versione a 32 bit di plink. In caso contrario, scarica la versione a 64 bit.

1. Avvia plink dal prompt dei comandi

Non puoi semplicemente fare doppio clic su plink.exe per avviarlo. Poiché si tratta di un'utilità solo da riga di comando (senza GUI), dovresti prima avviare il prompt dei comandi di Windows.

Per questo, fai clic sul menu Start di Windows e digita "cmd.exe" nella casella di ricerca e premi invio, questo avvierà il prompt dei comandi di Windows.

Inoltre, a seconda di dove hai scaricato plink.exe, potresti dover modificare di conseguenza la variabile PATH di Windows.

Vai alle finestre "Proprietà del sistema", fai clic su "Variabili d'ambiente", seleziona Variabile di percorso e aggiungi qui la directory in cui si trova plink.exe.

Oppure puoi semplicemente impostare la tua variabile PATH come mostrato di seguito. Nell'esempio seguente, ho scaricato plink.exe nella directory C:\Downloads.

set PATH=%PATH%;C:\Downloads

Quindi, digita plink nel prompt dei comandi, questo mostrerà le varie opzioni disponibili.

2. Sessione SSH interattiva Plink

Quella che segue è la sintassi di base per plink:

plink [options] connection [command]

Nella sintassi sopra:

  • opzioni:puoi passare varie opzioni a plink. Questo è facoltativo.
  • connessione – Questo avrà le informazioni di connessione del server Linux a cui vuoi connetterti. I vari metodi di connessione sono spiegati negli esempi seguenti.
  • comando – Questo è il comando che dovrebbe essere eseguito sul server Linux remoto. Questo è facoltativo.

Sebbene il comando sia facoltativo, quando non lo dai, visualizzerà una sessione interattiva grezza, che avrà molti caratteri non leggibili non stampabili sullo schermo. Come spiegato in precedenza, plink non è pensato per essere utilizzato come sessione interattiva. Usa lo stucco per la sessione interattiva.

Per ora, vediamo vari metodi per utilizzare la connessione.

Innanzitutto, puoi semplicemente fornire l'indirizzo IP del server remoto. Questo richiederà quindi il nome utente e la password per accedere.

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

Oppure puoi anche usare il nome utente usando il simbolo @ come mostrato di seguito. Questo richiederà solo la password, poiché abbiamo specificato il nome utente.

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

Puoi anche passare il nome utente usando l'opzione -l come mostrato di seguito:

C:\>plink 192.168.101.1 -l mysql

Puoi anche usare il nome di una sessione di stucco esistente. In questo esempio, sto usando la sessione di stucco salvata esistente chiamata "devdb". Questo è il modo di utilizzo consigliato, poiché puoi portare tutte le informazioni di configurazione da PuTTY a qui per questa particolare sessione "devdb".

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

Il seguente -load è esattamente lo stesso di sopra.

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

Come vedi di seguito, una volta effettuato l'accesso, riceverai un prompt dei comandi. Tuttavia, facendo qualsiasi cosa qui verranno visualizzati alcuni caratteri non intuitivi.

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 ~]#

Ancora una volta, per la sessione SSH interattiva, usa PuTTY.

In una nota correlata, anche se usi PuTTY da un po', potresti trovare utili alcuni suggerimenti da qui:10 fantastici suggerimenti e trucchi PuTTY che probabilmente non sapevi

3. Plink Sessione SSH non interattiva per eseguire un comando remoto

Usando plink, da Windows, puoi eseguire un comando sul server Linux senza alcuna interazione da parte dell'utente e solo visualizzare l'output.

Per questo, passa il comando come ultimo argomento al plink come mostrato di seguito.

Nell'esempio seguente, eseguirà il comando "crontab -l" sul server remoto e visualizzerà l'output.

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

Se desideri eseguire più comandi, raggruppali insieme come mostrato di seguito.

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

Quanto segue eseguirà lo script di shell db-backup.sh sul server Linux remoto. Ma lo stai avviando dal tuo computer Windows.

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

Alcuni punti da tenere a mente:

  • Se il comando precedente richiede la password e se non vuoi che ciò accada, dovresti impostare l'autenticazione della chiave pubblica-privata in modo appropriato in modo che il server Linux remoto non chieda la password.
  • Puoi anche passare la password come opzione della riga di comando per plink, come mostrato in uno degli esempi seguenti.
  • Inoltre, se sopra viene visualizzato un messaggio di errore relativo al protocollo non valido, dovresti passare il protocollo appropriato come mostrato nell'esempio successivo.

4. Esegui più comandi Linux da un file Windows

Invece di specificare tutti i comandi da eseguire sul server Linux remoto nella riga di comando di plink, puoi anche inserirli in un file di testo e specificare il file come parametro per il plink.

Ad esempio, crea il seguente file chiamato commands.txt su Windows.

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

Ora per eseguire tutti i comandi precedenti sul server Linux remoto uno per uno in sequenza, esegui il seguente comando plink sul tuo laptop Windows.

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

5. Specificare il protocollo di connessione

Plink consente i seguenti protocolli:SSH, Telnet, Accesso remoto (rlogin), Raw, Connessione seriale

Il più popolare e l'impostazione predefinita è SSH. Usa -ssh come mostrato di seguito.

C:\>plink -ssh [email protected]

Per Telnet:

C:\>plink -telnet [email protected]

Per l'accesso remoto tramite rlogin:

C:\>plink -rlogin [email protected]

Per Raw:

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

Se stai cercando di specificare un protocollo particolare e ricevi l'errore "ERRORE FATAL:Errore di rete:Connessione rifiutata", significa che il server remoto non supporta il protocollo specificato.

Se non vuoi specificare il protocollo sulla riga di comando:

  • Puoi utilizzare una sessione PuTTY salvata che ha già il protocollo definito per quella particolare sessione.
  • Oppure puoi utilizzare la variabile ambiente di Windows denominata PLINK_PROTOCOL e impostare il valore di conseguenza, che verrà utilizzato da plink.

6. Specificare la password SSH come argomento Plink

Se non si dispone della configurazione dell'autenticazione basata su chiave, è possibile passare la password come parametro nella riga di comando. Inutile dire che questo metodo non è consigliato.

Questo si connetterà al server come root usando la password specificata dall'opzione -pw, eseguirà tutti i comandi Linux forniti e visualizzerà l'output sul prompt dei comandi di Windows.

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

Naturalmente, il metodo più semplice consiste nell'utilizzare una sessione di stucco salvata (ad esempio, devdb) invece di specificare il nome utente e l'indirizzo IP come mostrato di seguito.

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

7. Debug dei problemi di Plink

Innanzitutto, assicurati di avere l'ultima versione di plink. Utilizzare l'opzione -V (V maiuscola) come mostrato di seguito. L'attuale versione stabile è 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

Quindi, usa l'opzione -v (v minuscola) come mostrato di seguito per un output più dettagliato.

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. Specifica la porta SSH come opzione Plink

Per impostazione predefinita per SSH, si connetterà alla porta 22. Ma, sul tuo server Linux, se SSH è configurato per funzionare su una porta diversa, usa l'opzione -P in plink per specificare la porta.

Nell'esempio seguente, plink si connetterà al server Linux remoto sulla porta 25.

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

Quando utilizzi una sessione PuTTY salvata e un'opzione -P, invece di utilizzare la porta dalla sessione salvata, utilizzerà la porta specificata.

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

9. File di registro Plink per connessioni SSH

Per il protocollo SSH in Plink, ci sono un paio di utili opzioni di registrazione.

La seguente opzione –sshlog salverà i log nel file specificato (sshlog.txt).

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

Questo è il contenuto parziale dell'output di 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

Per un registro più dettagliato, usa l'opzione -sshrawlog. Si noti che la dimensione del file di questo sarà maggiore di quella sopra, poiché ciò memorizzerà molte più informazioni nel file di registro.

Inoltre, l'esecuzione dell'operazione richiederà più tempo rispetto al comando precedente, poiché l'opzione sshrawlog raccoglie più informazioni di registro rispetto alla normale opzione sshlog.

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

10. Specificare il protocollo SSH (SSH-1 o SSH-2)

Per impostazione predefinita, utilizzerà il protocollo SSH-2, che può anche essere specificato utilizzando l'opzione -2 come mostrato di seguito.

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

Per il protocollo SSH-1, utilizzare l'opzione -1 come mostrato di seguito. Se il tuo server non lo supporta, riceverai il seguente errore.

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

11. Specifica il protocollo IP (IPv4 o IPv6)

Per impostazione predefinita, utilizzerà IPv4, che può anche essere specificato utilizzando l'opzione -4 come mostrato di seguito.

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

Per utilizzare IPv6, utilizzare l'opzione-6 come mostrato di seguito.

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

12. Usa il file della chiave privata per l'autenticazione con Plink

Utilizzare l'opzione -i per specificare la posizione del file della chiave privata da utilizzare per l'autenticazione.

Nell'esempio seguente, utilizzerà il file devdb.ppk dalla directory C:\Downloads.

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

Nota:riceverai "Server rifiutato la nostra chiave", se la chiave fornita non è configurata correttamente per essere utilizzata con il tuo server Linux.

Se il file della chiave non viene trovato (ad esempio, quando si fornisce un nome di directory errato), verrà visualizzato il seguente errore:

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: 

Se specifichi una chiave che non è di formato corretto, riceverai il seguente messaggio di errore.

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. Ulteriori opzioni di abilitazione e disabilitazione per Plink SSH

Puoi anche utilizzare le seguenti opzioni SSH plink:

  • -X per abilitare l'inoltro X11
  • -X per disabilitare l'inoltro X11
  • -A per abilitare l'inoltro dell'agente
  • -a per disabilitare l'inoltro dell'agente
  • -t per abilitare l'allocazione pty
  • -T per disabilitare l'allocazione pty
  • -noagent per disabilitare l'uso di Pageant
  • -agente per abilitare l'uso di Pageant
  • -C per abilitare la compressione

14. Impronta digitale e HostKey con Plink

Utilizzare l'opzione -pgpfp che visualizzerà i dettagli dell'impronta digitale PGP per PuTTY. In genere puoi usarlo per stabilire l'attendibilità dall'eseguibile plink.exe a un altro programma o eseguibile a cui stai tentando di connetterti.

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

Inoltre, puoi usare hostkey nel plink per connetterti al server remoto di conseguenza usando l'opzione -hostkey.

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

15. Opzione Plink -batch per i file batch di Windows

Se stai eseguendo plink all'interno di un file batch di Windows, ti consigliamo di utilizzare l'opzione -batch.

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

Nell'esempio sopra, se il comando complex-linux-fallisce, o richiede un input dall'utente, o si blocca, ecc., lo script batch di Windows non sarà in attesa. Invece, plink abbandonerà semplicemente il comando e lo script batch avrà esito negativo.

Questo è probabilmente ciò che ti aspetteresti che accada invece del tuo lavoro con il file batch di Windows che è solo in attesa o sospeso.

Quindi, usa l'opzione -batch in plink quando scrivi script batch di Windows usando plink.


Linux
  1. Come eseguire il desktop remoto da Windows a desktop Linux utilizzando XRDP

  2. Connettiti a Linux da Windows usando PuTTY

  3. Automatizzare l'esecuzione del comando su Linux da Windows utilizzando PuTTY

  4. Come utilizzare rsync dal PC Windows al server Linux remoto?

  5. Copia esatta dei file da NTFS a un altro NTFS utilizzando Linux

lsof Command in Linux (10 esempi)

Comandi SSH in Linux con esempi di utilizzo

Passaggio da Windows a Linux

Esempi di comandi Tmux per gestire più sessioni di terminale in Linux

Come scaricare file da server Linux remoti

Come eseguire il comando SUDO in WinSCP per trasferire file da Windows a Linux