it-swarm.com.de

Erstellen Sie eine Batchdatei oder Verknüpfung zu PuTTY (ssh), die eine Sitzung öffnet und einen Befehl ausführt

Ich stelle oft fest, dass ich eine SSH-Sitzung öffne, um denselben einzelnen Befehl auszuführen. Ich habe alles eingerichtet, um mich anzumelden, ohne ein Passwort einzugeben (über SSH-Schlüssel-basierte Authentifizierung). Daher habe ich mich gefragt, ob es eine Möglichkeit gibt, in Windows eine Verknüpfung oder eine Batch-Datei zu erstellen, mit der PuTTY oder ein ähnliches Programm geladen und dann gestartet werden kann Befehl (und wahrscheinlich beenden, wenn das Ergebnis gut ist).

10

Verwenden Sie die PuTTY-Befehlszeilenversion plink.exe, um eine SSH-Verbindung zu einem Host Ihrer Wahl herzustellen. Verwenden Sie den Schalter -ssh, um eine Verbindung mit SSH herzustellen. Mit dem Schalter -m können Sie eine Befehlsdatei einfügen:

plink.exe -ssh Host1 -m C:\path\to\commands.txt

Sie können plink.exe von hier herunterladen.

Der letzte Schritt wäre, eine Verknüpfung mit plink.exe und den gewünschten Parametern zu erstellen.

In der Plink-Dokumentation finden Sie weitere Parameter: Plink.exe-Dokumentation

14
Smeerpijp

Um eine Befehlsausführung zu automatisieren, verwenden Sie Plink (aus dem PuTTY-Paket) und nicht PuTTY selbst.

Plink akzeptiert einen Befehl in seiner Befehlszeile:

plink.exe [email protected] command

Wenn Sie PuTTY weiterhin verwenden möchten, können Sie den Schalter -m verwenden, um eine Befehlsdatei anzugeben (Plink unterstützt auch den Schalter -m).

8
Martin Prikryl

Sie können PuTTY-Konfigurationen verwenden, um dies zu erreichen.

Laden Sie PuTTY und konfigurieren Sie Ihre Sitzung.

Geben Sie hier den Remote-Befehl ein, den Sie ausführen möchten:

PuTTY remote command box

Bevor Sie auf " Öffnen " klicken, kehren Sie zum Tab " Sitzung " (oben) zurück und speichern Sie Ihre Konfiguration .

Erstellen Sie jetzt eine Verknüpfung zu PuTTY.exe und fügen Sie das Flag -load hinzu, zum Beispiel:

%PATH_TO_PuTTY%\PuTTY.exe -load my_config

Jetzt können Sie einfach auf die Verknüpfung klicken und es wird Ihre Sitzung geladen und Ihr Befehl ausgeführt.

6
Attie

Ich dachte nur, ich würde das Skript einfügen, das ich gemacht habe, um hoffentlich ein paar Stunden Syntax- und Manpage-Recherche zu ersparen


a) SingleIP-, IP Range- oder IPList-Datei
b) Skriptname für die Ausführung im IP/Bereich (aktuelles Unix-Skript vom Typ sh/ksh)
c) Führen Sie optional einen nmap-Scan nach offenem Port 22 durch (d. h. Subnetz bei einigen Nicht-Linux-Computern)
       -Wollen IPs vermeiden, mit denen PuTTY keine Verbindung herstellen kann, um zu verhindern, dass das Skript ordnungsgemäß fortgesetzt werden kann
d) Führen Sie optional den Befehl pscp aus, um den Host-Schlüssel automatisch zwischenzuspeichern (PuTTY führt dies nicht automatisch aus).

Diese Charge setzt voraus:


1. Sie haben das vollständige PuTTY-Paket und den SSH-Schlüssel in C:\Programme\PuTTY\ Installiert.
2. Batch-/Skript-/IP-Listendateien, die unter C:\Programme\PuTTY\scripts\ Installiert sind
3. Die Arbeitsverzeichnisse NMAP und PuTTY befinden sich in Ihrem Befehlspfad

https://www.harmonyhit.com/PuttyBatch.bat

Dies ist vor allem dann hilfreich, wenn ein einzelnes Skript (z. B. das Aktualisieren eines SSL-Zertifikats) auf mehreren Computern ausgeführt werden soll

Hier ist die vollständige Batch-Datei:

@ECHO OFF 
 
 Rem Sie müssen den Abschnitt CACHEKEY und SCRIPT so ändern, dass er den Speicherort Ihres SSH-Schlüssels widerspiegelt. 
 
 Set IPFILE = IPList_temp.txt 
 Set runagain = n 
 set OPTION = 1 
 set RANGE = 
 set IP = 
 set SCAN = n 
 set KEYCACHE = n 
 
: OPTION 
 CLS 
 ECHO (Das Arbeitsverzeichnis ist auf C:\Programme\PuTTY\scripts\eingestellt.) 
 ECHO. 
 ECHO 1. Einzelne IP 
 ECHO 2. IP-Listendatei 
 ECHO 3. IP-Bereich 
 ECHO. 
 Set/p OPTION = "Choose IP-Typ: "
 IF% OPTION% == 3 GOTO IPRANGE 
 IF% OPTION% == 2 GOTO IPLIST 
 IF% OPTION% == 1 GOTO SINGLEIP 
 echo Bitte wählen Sie eine gültige Option 
 GOTO OPTION 
 
: IPRANGE 
 ECHO Geben Sie den/die IP-Bereich (e) wie im folgenden Beispiel ein. Verwenden Sie ein Leerzeichen zwischen mehreren Bereichen: 
 ECHO, dh "10.21.0.15-99 10.21.1.15-100" 
 Set/p RANGE = Bereich eingeben: 
 Echo% RANGE%>% IPFILE% 
 GOTO SCRIPTNAME 
 
: SINGLEIP 
 Set/p IP = IP eingeben: 
 Echo% IP%>% IPFILE% 
 GOTO SCRIPTNAME 
 
: IPLIST 
 Set/p IP = Geben Sie den IPList-Dateinamen ein: 
 Copy/Y% IP%% IPFILE% 
 GOTO SCRIPTNAME 
 
: SCRIPTNAME 
 Set/p SCRIPT = Geben Sie den Skriptnamen ein: 
 Falls nicht vorhanden% SCRIPT% (
 Echodateiname existiert nicht! 
 GOTO SCRIPTNAME) 
 
 ECHO. 
 Set/p SCAN = Zuerst Nmap scannen? (empfohlen): 
 if% SCAN% == n GOTO: RUNCACHE 
 
 rem Überprüfen Sie, ob der IP-Typ "Bereich" ist, da nmap keinen IP-Bereich aus einer Datei lesen kann und muss Geben Sie direkt den Befehl nmap ein 
 IF% OPTION% == 3 GOTO NMAPRANGE 
: NMAP 
 Echo Scanning IPs für Port 22 offen ... 
 nmap --open -n -p22 -iL% IPFILE% -oG - | findstr/E Up> nmap_temp.txt 
 GOTO AFTERNMAP 
 
: NMAPRANGE 
 Echo Scanning IPs für Port 22 offen ... 
 nmap - öffne -n ​​-p22% RANGE% -oG - | findstr/E Up> nmap_temp.txt 
 
: AFTERNMAP 
 Echo DONE 
 Rem-nmap-Formatierung ist nicht korrekt. Im Folgenden werden zusätzliche Informationen 
 für entfernt/f "tokens = 2" %% A in (nmap_temp.txt) gibt %% A als Echo aus >> nmap_temp2.txt 
 entfernt verborgenen Speicherplatz am Ende der IP (erfordert, dass sich "repl" im Batch-Dateiverzeichnis befindet ) 
 Typ "nmap_temp2.txt" | repl "" "">% IPFILE% 
 
: RUNCACHE 
 set/p KEYCACHE = SSH-Schlüssel scannen und zwischenspeichern (j/n)? 
 if% KEYCACHE % == n GOTO SCRIPT 
 
: CACHEKEY 
 rem Durchlaufen Sie alle IP-Adressen, um den SSH-Hostschlüssel zwischenzuspeichern, falls nicht bereits 
 für/F "-Token zwischengespeichert wurde. = * "%% A in (% IPFILE%) do (echo y |" C:\Programme\PuTTY\pscp.exe "-l root -i" C:\Programme\PuTTY\SSH.ppk "-touch %% A:/tmp/test) 
 
: SCRIPT 
 Für/F "-Token = 1" %% A in (% IPFILE%) do ("C:\Programme\PuTTY\putty.exe "-ssh %% A -t -l root -i" C:\Programme\PuTTY\SSH.ppk "-m" C:\Programme\PuTTY\scripts \% SCRIPT% ") 
 falls vorhanden nmap_temp.txt (del nmap_temp.txt) 
 falls vorhanden nmap_temp2.txt (del nmap_temp2.txt) 
 set/p runagain = "Drücken Sie die Eingabetaste, um zu beenden, oder y, um erneut auszuführen "
 if% runagain% == y GOTO OPTION
2
Todd Porter

Wenn Sie Windows 10 verwenden, könnte es Sie interessieren, dass Microsoft angeblich eine Betaversion von OpenSSH (client und hat Server):

[…] Gehen Sie zu „Optionale Funktionen verwalten“ und dann zu „Eine Funktion hinzufügen“. Sie können dann in der Liste nach unten scrollen und die Funktionen von OpenSSH Client (Beta) und OpenSSH Server (Beta) in Windows suchen. Die Idee, einen anderen Remotedienst unter Windows auszuführen, kann entmutigend sein, sodass wir Ihnen keine Vorwürfe machen, wenn Sie den Server nicht installieren möchten.

Nach der Installation können Sie einfach Ihre Befehlszeile starten und den OpenSSH-Client verwenden, indem Sie ssh gefolgt von einem Befehl wie ssh [email protected] eingeben.

Hier ist die aktuelle (Stand: 28. November 2017) Anleitung zur Verwendung von ssh -Befehlen, die wir mit dem Windows OpenSSH-Client erhalten:

C:\WINDOWS\system32>ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-J [[email protected]]Host[:port]] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
           [-S ctl_path] [-W Host:port] [-w local_tun[:remote_tun]]
           [[email protected]]hostname [command]
C:\WINDOWS\system32>

Wenn dies funktioniert, sollten Sie in der Lage sein, ssh wie auf einem * Nix zu verwenden:

C:\WINDOWS\system32>ssh [email protected] "ls -l ~"
2
Michael

Sie können sich auch Software wie mRemoteNG, MOBAxTerm oder SecureCRT ansehen, die Ihre SSH-Verbindungen für Sie verwaltet. Dies ist auch mit den gespeicherten PuTTY-Sitzungen verknüpft, sodass Sie der Sitzung eine Vorlage zuweisen können.

1
Gubbins

Dies ist die endgültige "CMD", die ich einfach auf meinem FileServer speichern und eine Verknüpfung auf meinem Desktop erstellen kann.

::FreeSoftwareServers
::Automated Opening of SSH Tunnel & Execute CMD on Remote Host
::https://superuser.com/questions/1278434/create-a-batch-file-or-shortcut-to-PuTTY-ssh-that-opens-a-session-and-runs-a-c

set puttydir="C:\Program Files\PuTTY"
set exe=plink.exe
::Profile must exist in PuTTY
set remotehost=FileServer
set remotecmd="chmod 777 /mnt/mdadm/torrents -R"

cd %puttydir% 

%exe% %remotehost% %remotecmd%

::Test First Manually in CMD Prompt
::Note Remote Host does NOT have access to BashRC Alias's
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer touch /tmp/testfile
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer ~/script.sh
0