GNU/Linux >> LINUX-Kenntnisse >  >> Linux

10 PuTTY PLINK-Beispiele zur Automatisierung von Remote-Linux-Befehlen aus Windows-Stapeldateien

Plink steht für PuTTY Link.

Plink ist ein begleitendes Befehlszeilenprogramm für PuTTY.

Auf sehr hohem Niveau:

  • Verwenden Sie PuTTY für interaktive SSH-Sitzungen von Ihren Windows- zu Linux-Servern
  • Verwenden Sie Plink für eine nicht-interaktive SSH-Sitzung, um Remote-Linux-Befehle für Automatisierungszwecke von Ihrem Windows aus auszuführen


In diesem Tutorial besprechen wir Folgendes:

  1. Plink von der Eingabeaufforderung aus starten
  2. Plink Interaktive SSH-Sitzung
  3. Plink nicht interaktive SSH-Sitzung zum Ausführen eines Remote-Befehls
  4. Mehrere Linux-Befehle aus einer Windows-Datei ausführen
  5. Verbindungsprotokoll angeben
  6. SSH-Passwort als Plink-Argument angeben
  7. Plink-Probleme beheben
  8. SSH-Port als Plink-Option angeben
  9. Plink-Protokolldateien für SSH-Verbindungen
  10. SSH-Protokoll angeben (SSH-1 oder SSH-2)
  11. IP-Protokoll angeben (IPv4 oder IPv6)
  12. Private Schlüsseldatei zur Authentifizierung mit Plink verwenden
  13. Zusätzliche Aktivierungs- und Deaktivierungsoptionen für Plink SSH
  14. Fingerabdruck und HostKey mit Plink
  15. Plink -batch-Option für Windows-Stapeldateien

Laden Sie zunächst die ausführbare plink-Datei von hier herunter.

Wenn Sie PuTTY noch nicht auf Ihrem Computer installiert haben, stellen Sie sicher, dass Sie zusammen mit plink auch die ausführbare Putty-Datei herunterladen.

Wenn Sie einen 32-Bit-Windows-Laptop haben, stellen Sie sicher, dass Sie die 32-Bit-Version von plink herunterladen. Wenn nicht, laden Sie die 64-Bit-Version herunter.

1. Starten Sie plink von der Eingabeaufforderung

Sie können nicht einfach auf plink.exe doppelklicken, um es zu starten. Da dies ein reines Befehlszeilenprogramm ist (ohne GUI), sollten Sie zuerst Ihre Windows-Eingabeaufforderung starten.

Klicken Sie dazu in Ihrem Windows auf das Startmenü, geben Sie „cmd.exe“ in das Suchfeld ein und drücken Sie die Eingabetaste. Dadurch wird die Windows-Eingabeaufforderung gestartet.

Je nachdem, wo Sie die plink.exe heruntergeladen haben, müssen Sie möglicherweise auch die PATH-Variable von Windows entsprechend ändern.

Gehen Sie zu Ihrem „Systemeigenschaften“-Fenster, klicken Sie auf „Umgebungsvariablen“, wählen Sie Pfadvariable und fügen Sie hier das Verzeichnis an, in dem sich die plink.exe befindet.

Oder Sie können einfach Ihre PATH-Variable wie unten gezeigt festlegen. Im folgenden Beispiel habe ich die plink.exe in das Verzeichnis C:\Downloads heruntergeladen.

set PATH=%PATH%;C:\Downloads

Geben Sie als Nächstes plink in die Eingabeaufforderung ein, dies zeigt die verschiedenen verfügbaren Optionen an.

2. Plink Interaktive SSH-Sitzung

Das Folgende ist die grundlegende Syntax für plink:

plink [options] connection [command]

In obiger Syntax:

  • Optionen – Sie können verschiedene Optionen an plink übergeben. Dies ist optional.
  • Verbindung – Dies enthält die Verbindungsinformationen des Linux-Servers, mit dem Sie sich verbinden möchten. In den folgenden Beispielen werden verschiedene Verbindungsmethoden erläutert.
  • Befehl – ​​Dies ist der Befehl, der auf dem Remote-Linux-Server ausgeführt werden sollte. Dies ist optional.

Während der Befehl optional ist, wird er, wenn Sie ihn nicht geben, eine unformatierte interaktive Sitzung anzeigen, die viele nicht druckbare, nicht lesbare Zeichen auf dem Bildschirm enthält. Wie bereits erwähnt, ist plink nicht als interaktive Sitzung gedacht. Verwenden Sie Putty für interaktive Sitzungen.

Sehen wir uns zunächst verschiedene Methoden zur Verwendung der Verbindung an.

Zuerst können Sie einfach die IP-Adresse des Remote-Servers angeben. Daraufhin wird nach dem Benutzernamen und dem Passwort gefragt, um sich anzumelden.

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

Oder Sie können auch den Benutzernamen mit dem @-Symbol verwenden, wie unten gezeigt. Dies wird nur nach dem Passwort fragen, da wir den Benutzernamen angegeben haben.

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

Sie können den Benutzernamen auch mit der Option -l wie unten gezeigt übergeben:

C:\>plink 192.168.101.1 -l mysql

Sie können auch den Namen einer bestehenden Putty-Sitzung verwenden. In diesem Beispiel verwende ich die vorhandene gespeicherte Putty-Sitzung namens „devdb“. Dies ist die empfohlene Art der Verwendung, da Sie alle Konfigurationsinformationen von PuTTY für diese spezielle „devdb“-Sitzung hierher bringen können.

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

Das folgende -load ist genau dasselbe wie oben.

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

Wie Sie unten sehen, erhalten Sie nach der Anmeldung eine Eingabeaufforderung. Aber wenn Sie hier irgendetwas tun, werden einige nicht benutzerfreundliche Zeichen angezeigt.

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

Auch hier verwenden Sie für interaktive SSH-Sitzungen bitte PuTTY.

Auch wenn Sie PuTTY schon eine Weile verwenden, finden Sie vielleicht einige hilfreiche Tipps von hier:10 fantastische PuTTY-Tipps und Tricks, die Sie wahrscheinlich nicht kannten

3. Plink Nicht-interaktive SSH-Sitzung zum Ausführen eines Remote-Befehls

Mit plink können Sie von Windows aus einen Befehl auf dem Linux-Server ohne Benutzerinteraktion ausführen und nur die Ausgabe anzeigen.

Übergeben Sie dazu den Befehl als letztes Argument an den plink, wie unten gezeigt.

Im folgenden Beispiel wird der Befehl „crontab -l“ auf dem Remote-Server ausgeführt und die Ausgabe angezeigt.

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

Wenn Sie mehrere Befehle ausführen möchten, gruppieren Sie sie wie unten gezeigt.

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

Im Folgenden wird das Shellskript db-backup.sh auf dem Remote-Linux-Server ausgeführt. Aber Sie initiieren dies von Ihrem Windows-Rechner aus.

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

Einige Punkte, die Sie beachten sollten:

  • Wenn der obige Befehl nach einem Passwort fragt und Sie dies nicht möchten, sollten Sie die Public-Private-Key-Authentifizierung entsprechend einrichten, damit der Remote-Linux-Server nicht nach dem Passwort fragt.
  • Sie können das Passwort auch als Befehlszeilenoption an plink übergeben, wie in einem der folgenden Beispiele gezeigt.
  • Auch wenn oben eine Fehlermeldung über ein ungültiges Protokoll angezeigt wird, sollten Sie das entsprechende Protokoll übergeben, wie im nächsten Beispiel gezeigt.

4. Mehrere Linux-Befehle aus einer Windows-Datei ausführen

Anstatt alle Befehle, die auf dem Remote-Linux-Server ausgeführt werden sollen, in der plink-Befehlszeile anzugeben, können Sie sie auch in eine Textdatei schreiben und die Datei als Parameter für den plink angeben.

Erstellen Sie zum Beispiel die folgende Datei namens commands.txt auf Ihrem Windows.

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

Um nun alle oben genannten Befehle nacheinander auf dem Remote-Linux-Server auszuführen, führen Sie den folgenden plink-Befehl auf Ihrem Windows-Laptop aus.

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

5. Geben Sie das Verbindungsprotokoll an

Plink erlaubt die folgenden Protokolle:SSH, Telnet, Remote Login (rlogin), Raw, Serial Connection

Die beliebteste und die Standardeinstellung ist SSH. Verwenden Sie -ssh wie unten gezeigt.

C:\>plink -ssh [email protected]

Für Telnet:

C:\>plink -telnet [email protected]

Für die Remote-Anmeldung mit rlogin:

C:\>plink -rlogin [email protected]

Für Raw:

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

Wenn Sie versuchen, ein bestimmtes Protokoll anzugeben, und die Fehlermeldung „FATAL ERROR:Network error:Connection failed“ erhalten, bedeutet dies, dass der Remote-Server das angegebene Protokoll nicht unterstützt.

Wenn Sie das Protokoll nicht in der Befehlszeile angeben möchten:

  • Sie können eine gespeicherte PuTTY-Sitzung verwenden, für die das Protokoll bereits für diese bestimmte Sitzung definiert ist.
  • Oder Sie können die Windows-Umgebungsvariable namens PLINK_PROTOCOL verwenden und den Wert entsprechend festlegen, der von plink verwendet wird.

6. Geben Sie das SSH-Passwort als Plink-Argument an

Wenn Sie nicht über die Einrichtung der schlüsselbasierten Authentifizierung verfügen, können Sie das Kennwort als Parameter in der Befehlszeile übergeben. Unnötig zu erwähnen, dass diese Methode nicht empfohlen wird.

Dadurch wird unter Verwendung des durch die Option -pw angegebenen Passworts eine Verbindung zum Server als root hergestellt, alle angegebenen Linux-Befehle ausgeführt und die Ausgabe an Ihrer Windows-Eingabeaufforderung angezeigt.

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

Die einfache Methode besteht natürlich darin, eine gespeicherte Putty-Sitzung (z. B. devdb) zu verwenden, anstatt den Benutzernamen und die IP-Adresse wie unten gezeigt anzugeben.

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

7. Plink-Probleme beheben

Stellen Sie zunächst sicher, dass Sie die neueste Version von plink haben. Verwenden Sie die Option -V (großes V) wie unten gezeigt. Die aktuelle stabile Version ist 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

Verwenden Sie als Nächstes die Option -v (Kleinbuchstabe v) wie unten gezeigt für eine ausführlichere Ausgabe.

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. Geben Sie den SSH-Port als Plink-Option an

Standardmäßig wird für SSH eine Verbindung zu Port 22 hergestellt. Wenn SSH auf Ihrem Linux-Server jedoch so konfiguriert ist, dass es auf einem anderen Port ausgeführt wird, verwenden Sie die Option -P in plink, um den Port anzugeben.

Im folgenden Beispiel verbindet sich plink mit dem Remote-Linux-Server auf Port 25.

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

Wenn Sie eine gespeicherte PuTTY-Sitzung und die Option -P verwenden, wird anstelle des Ports aus der gespeicherten Sitzung der angegebene Port verwendet.

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

9. Plink-Protokolldateien für SSH-Verbindungen

Für das SSH-Protokoll in Plink gibt es einige nützliche Protokollierungsoptionen.

Die folgende Option –sshlog speichert die Protokolle in der angegebenen Datei (sshlog.txt).

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

Dies ist der Teilinhalt der sshlog.txt-Ausgabe

=~=~=~=~=~=~=~=~=~=~=~= 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

Verwenden Sie für ein detaillierteres Protokoll die Option -sshrawlog. Bitte beachten Sie, dass die Dateigröße größer als oben ist, da dadurch viel mehr Informationen in der Protokolldatei gespeichert werden.

Außerdem dauert die Ausführung länger als der obige Befehl, da die sshrawllog-Option mehr Protokollinformationen sammelt als die normale sshlog-Option.

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

10. Geben Sie das SSH-Protokoll (SSH-1 oder SSH-2) an

Standardmäßig wird das SSH-2-Protokoll verwendet, das auch mit der Option -2 angegeben werden kann, wie unten gezeigt.

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

Verwenden Sie für das SSH-1-Protokoll die Option -1 wie unten gezeigt. Wenn Ihr Server dies nicht unterstützt, erhalten Sie die folgende Fehlermeldung.

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

11. Geben Sie das IP-Protokoll an (IPv4 oder IPv6)

Standardmäßig wird IPv4 verwendet, das auch mit der Option -4 angegeben werden kann, wie unten gezeigt.

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

Um IPv6 zu verwenden, verwenden Sie die Option-6 wie unten gezeigt.

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

12. Verwenden Sie die private Schlüsseldatei für die Authentifizierung mit Plink

Verwenden Sie die Option -i, um den Speicherort der privaten Schlüsseldatei anzugeben, die für die Authentifizierung verwendet werden soll.

Im folgenden Beispiel wird die Datei devdb.ppk aus dem Verzeichnis C:\Downloads verwendet.

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

Hinweis:Sie erhalten „Server hat unseren Schlüssel abgelehnt“, wenn der angegebene Schlüssel nicht richtig für die Verwendung mit Ihrem Linux-Server konfiguriert ist.

Wenn die Schlüsseldatei nicht gefunden wird (z. B. wenn Sie einen falschen Verzeichnisnamen angeben), erhalten Sie die folgende Fehlermeldung:

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: 

Wenn Sie einen Schlüssel angeben, der nicht das richtige Format hat, erhalten Sie die folgende Fehlermeldung.

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. Zusätzliche Aktivierungs- und Deaktivierungsoptionen für Plink SSH

Sie können auch die folgenden plink-SSH-Optionen verwenden:

  • -X, um die X11-Weiterleitung zu aktivieren
  • -X zum Deaktivieren der X11-Weiterleitung
  • -A zum Aktivieren der Agentenweiterleitung
  • -a zum Deaktivieren der Agentenweiterleitung
  • -t, um die pty-Zuordnung zu aktivieren
  • -T zum Deaktivieren der PTY-Zuweisung
  • -noagent, um die Verwendung von Pageant zu deaktivieren
  • -Agent, um die Nutzung von Pageant zu ermöglichen
  • -C, um die Komprimierung zu aktivieren

14. Fingerabdruck und HostKey mit Plink

Verwenden Sie die Option -pgpfp, die die PGP-Fingerabdruckdetails für PuTTY anzeigt. In der Regel können Sie dies verwenden, um Vertrauen von der ausführbaren plink.exe-Datei zu einem anderen Programm oder einer ausführbaren Datei herzustellen, mit der Sie versuchen, eine Verbindung herzustellen.

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

Außerdem können Sie den Hostschlüssel im Plink verwenden, um sich entsprechend mit der Option -hostkey mit dem Remote-Server zu verbinden.

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

15. Plink -Batch-Option für Windows-Batch-Dateien

Wenn Sie plink in einer Windows-Stapeldatei ausführen, wird empfohlen, die Option -batch zu verwenden.

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

Wenn im obigen Beispiel der Befehl „complex-linux-command“ fehlschlägt oder nach einer Eingabe vom Benutzer fragt oder hängen bleibt usw., wartet Ihr Windows-Batch-Skript nicht. Stattdessen bricht plink den Befehl einfach ab und das Batch-Skript schlägt fehl.

Dies ist wahrscheinlich das, was Sie erwarten würden, anstatt dass Ihr Windows-Batch-Datei-Job nur wartet oder hängt.

Verwenden Sie also die Option -batch in plink, wenn Sie Windows-Batch-Skripte mit plink schreiben.


Linux
  1. Remote-Desktop von Windows auf Linux-Desktop mit XRDP

  2. Linux-Suchbefehle

  3. Verbinden Sie sich von Windows aus mit PuTTY mit Linux

  4. Führen Sie den Befehl auf mehreren Linux-Servern von Windows aus aus

  5. diff-Befehlsbeispiele in Linux

lsof-Befehl unter Linux (10 Beispiele)

SSH-Befehle in Linux mit Verwendungsbeispielen

Umstieg von Windows auf Linux

Beispiele für Tmux-Befehle zum Verwalten mehrerer Terminalsitzungen unter Linux

So laden Sie Dateien von Remote-Linux-Servern herunter

So führen Sie den SUDO-Befehl in WinSCP aus, um Dateien von Windows nach Linux zu übertragen