Wie führe ich eine Befehlsdatei in PuTTY mit der automatischen Anmeldung an einer Eingabeaufforderung aus?


18

Ich benutze Folgendes, um mich automatisch bei einem Remote-Server anzumelden und dann die in a aufgelisteten Befehle auszuführen commands.txt:

C:\path\to\putty.exe -load "[Sessionname]" -l [user] -pw [password] -m C:\path\to\commands.txt

commands.txt enthält folgendes:

ps -elf|grep 'sometext'

Wenn ich dies versuche, wird jedoch ein neues Fenster für PuTTY angezeigt, das jedoch sofort nach dem Anmelden geschlossen und geschlossen wird. Infolgedessen kann ich die Ausgabe der Befehle nicht sehen.

Ich verstehe nicht, was hier los ist. Liege ich falsch oder muss ich weitere Schritte unternehmen, damit das PuTTY-Fenster vor dem Beenden einige Zeit angehalten wird?


2
Verwenden Sie stattdessen Plink.exe (normalerweise im Lieferumfang von Putty enthalten, denken Sie daran, es in PATH aufzunehmen). Ich habe 2 Stunden damit verbracht, zu googeln, wie man einen rsa-Schlüssel in einer Befehlszeile für PuTTY angibt, weil es unsicher ist, Passwörter hart zu codieren. Ich habe die Plink-Lösung übersehen, weil ich dachte, der Anruf müsse mit Kitt beginnen. Überprüfen Sie die Antwort unter Erwähnung von Plink. zB `Plink.exe -ssh host -l user -ic: \ Users \ myName \ .ssh \ myGeneratedPuttyKey.ppk
Soren Havelund Welling

Antworten:


11

Sie sollten verwenden plink.exe(eine Befehlszeilenschnittstelle zu den PuTTY-Backends) und nichtputty.exe

Sie erhalten das von der PuTTY-Download-Seite

Ohne plink:

Es scheint die einzige Möglichkeit zu sein, die -log <logfile>Optionen zu verwenden, den Inhalt zu drucken und ihn zu löschen.


Ich kann keine Plink- oder andere Befehlszeilenschnittstellen verwenden. Gibt es eine andere Möglichkeit, dies zu tun

2
@supportpb "Ich kann plink nicht verwenden" - warum? Was passiert, wenn Sie es versuchen?
Gertvdijk

1
@gertvdijk was passiert ist, dass er für die Verwendung von nicht genehmigter Software auf
Firmencomputern entlassen wird

nicht unterstützte Option:-log
Allan Bowe

9

Zuerst müssten Sie eine separate Datei erstellen, die alle Befehle enthält, die Sie ausführen möchten.

Beispiel: Ich möchte Drupal mit PuTTY auf meiner Domain herunterladen und installieren . Um das zu tun, müssen Sie:

Erstellen Sie zuerst eine TXT-Datei. In dieser Datei befinden sich die Befehle. Meins sind: " drush dl drupal " nächste Zeile, " drush si --account-name = [kontoname] --account-pass = [kontopass] --db-url = mysql: // [benutzer]: [pass ] @ localhost / [Datenbankname] --y "

Nach dem Speichern dieser Datei erstellen Sie jetzt eine BAT- Datei oder geben sie in die CMD-Eingabeaufforderung ein:

  • ssh.cmd
  • @echo on [damit Sie sehen, was los ist]
  • [Navigieren Sie zu Ihrer PuTTY-Installation. Meins ist:] cd C: \ Programme \ Putty
  • Start putty.exe -ssh [domain name] -l [username] -pw [password] -m [the directory of the .txt file you created which contains the codes you want to be executed]

Die Option -m funktioniert bei mir nicht. Es wird ein Fehler
ausgegeben, der

@ user590849 enthält der Pfad zu Ihrer Befehlstextdatei Leerzeichen? Weil ich gerade
Black Frog

2

Ihr Ansatz scheint gut zu sein, es gibt jedoch eine Standardeinstellung im Verhalten, die Sie hier in Schwierigkeiten bringt und Sie wahrscheinlich glauben lässt, dass nichts passiert.

Wenn ich dies versuche, wird jedoch ein neues Fenster für PuTTY angezeigt, das jedoch sofort nach dem Anmelden geschlossen und beendet wird

Ihre Sitzung endet sofort, nachdem der Befehl ausgeführt wurde, und PuTTY schließt das Fenster standardmäßig. Informationen zum Ändern dieses Verhaltens für Ihre Sitzung finden Sie in der Dokumentation zu PuTTY .

4.1.3 `Close Window on Exit'

   Finally in the Session panel, there is an option labelled `Close
   Window on Exit'. This controls whether the PuTTY terminal window
   disappears as soon as the session inside it terminates.

Interessant, aber das wirkt sich auch auf manuelle Sitzungen aus ...
Aviram Segal

1
@ AviramSegal Es ist eine Sitzungseinstellung. Duplizieren Sie einfach die Sitzungskonfiguration, session-nocloseund verwenden Sie diese für die Skripterstellung.
gertvdijk

1
oh Session-Einstellung, dann ja, das wird funktionieren
Aviram Segal

1

Es wäre kein Problem, wenn Sie nur die Batch-Datei zum Öffnen der Unix-Maschine erstellen möchten. Unten ist das Beispiel:

"PuTTY path" -ssh machinename -l username -pw password

Der PuTTY-Pfad sollte in doppelten Anführungszeichen stehen, z. B. "C: \ Programme \ putty \ putty.ext".

Maschinenname = Maschinenname ohne Anführungszeichen

Passwort = mit Anführungszeichen


0

Zusätzlich zu Avirams Antwort:

Unten sehen Sie ein Beispiel, wie Sie PuTTY-Befehle an der Eingabeaufforderung ausführen:

  • Gehen Sie zuerst zum PuTTY-Installationsverzeichnis C:\Program Files\PuTTYund führen Sie dann den folgenden Befehl aus:

    plink.exe -ssh server_ip -P port_no -l benutzername -pw kennwort

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.