Hallo, ich verbinde mich von einem Windows-PC aus mit Putty mit einem Remote-Linux-Server und führe dort bestimmte Befehle aus. Ich möchte die Aufgaben mit Plink wie folgt automatisieren:
plink serveradress -l userid -pwd pass -batch "ls;cmd1"
Wenn ich die Befehle „ls;cmd1;cmd2“ manuell über Putty/Plink ausführe, funktioniert es einwandfrei. Wenn ich jedoch dasselbe über cmd.ext und den obigen Plink-Befehl mache, erhalte ich die Meldung „bash cmd1 nicht gefunden“. Der Befehl ls funktioniert jedoch einwandfrei.
Warum passiert das? PS: cmd1 ist kein eingebauter Linux-Befehl. Ich nehme an, er wurde speziell für den Server erstellt.
Wie kann ich das zum Laufen bringen?
Antwort1
Wenn Bash „Befehl nicht gefunden“ meldet, bedeutet dies, dass der Befehl cmd1
nicht in gefunden werden kann $PATH
. Sie müssen also entweder sicherstellen, dass der Pfad für cmd1
immer in liegt $PATH
, oder Sie müssen den vollständigen Pfadnamen für angeben cmd1
:
plink serveradress -l userid -pwd pass -batch "ls;/where/you/can/find/cmd1"
Sie finden den vollständigen Pfadnamen which cmd1
in Ihrer interaktiven Shell (die über Putty).
Sie können den Pfad in ~/.bashrc
oder festlegen ~/.profile
, d. h. die Datei .bashrc oder .profile in Ihrem Home-Verzeichnis.
Sie können den Pfad mit echo $PATH
in Ihrer Putty-Sitzung oder mit plink serveradress -l userid -pwd pass -batch 'echo $PATH'
(beachten Sie die einfachen Anführungszeichen) überprüfen. Wenn Sie beides tun, sollten Sie einen Unterschied sehen.