Putty manuelle Sitzung und Plink-Sitzung verhalten sich unterschiedlich

501
Abhi

HI Ich verbinde mich mit einem Remote-Linux-Server mit Putty von einem Win-PC 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 das einwandfrei. Wenn ich jedoch die gleichen ausführlichen Befehle wie cmd.ext und den obigen Befehl mache, erhalte ich "bash cmd1 not found". Der Befehl ls funktioniert jedoch einwandfrei.

Warum passiert das? PS: cmd1 ist kein integrierter Linux-Befehl. Ich nehme an, es wurde speziell für den Server erstellt.

Wie mache ich das?

0

1 Antwort auf die Frage

0
Ljm Dullaart

Wenn sich bash über 'command not found' beschwert, bedeutet dies, dass der Befehl cmd1nicht in gefunden werden kann $PATH. Sie müssen also entweder sicherstellen, dass der Pfad für cmd1immer vorhanden ist $PATH, oder Sie müssen den vollständigen Pfadnamen für Folgendes angeben cmd1:

plink serveradress -l userid -pwd pass -batch "ls;/where/you/can/find/cmd1" 

Sie finden den vollständigen Pfadnamen which cmd1in Ihrer interaktiven Shell (die über Putty).

Sie können den PATH in ~/.bashrcoder ~/.profile, dh die .bashrc oder .profile in Ihrem Home-Verzeichnis festlegen.

Sie können den PFAD mit echo $PATHin Ihrer Putty-Sitzung oder mit plink serveradress -l userid -pwd pass -batch 'echo $PATH'(beachten Sie die einfachen Anführungszeichen). Wenn Sie beides tun, sollten Sie einen Unterschied sehen.

Ich kenne den Pfad zu den Skripts wie bashrc usw. nicht, die während meiner login_session = on ausgeführt werden. Gibt es eine Möglichkeit, eine Sitzung vom Typ "LOGIN" über plink zu starten. Deshalb führe ich diese Skripts automatisch aus, und cmd1 funktioniert, obwohl ich den Pfad nicht kenne. Alternativ gibt es eine Möglichkeit, alle Pfade zu den Skripten zu kennen, die während meiner login_session = on ausgeführt werden. PS - keines davon ist in meinem Heimatverzeichnis Abhi vor 6 Jahren 0
Zusätzliche Informationen zur Antwort hinzugefügt. Prüfen Sie, ob Ihnen das reicht. Ljm Dullaart vor 6 Jahren 0
Fantastisch. Mit Ausnahme von einem funktionieren alle meine Befehle jetzt in nicht interaktiven Sitzungen! Die Sache mit dem einen cmd, der nicht funktioniert, ist, dass der cmd in einem zweiten .sh gesetzt wird, der source-d aus einer .sh-Datei ist. Außerdem kann der .sh manuell in den .sh-Pfad eingefügt werden Von der Hauptdatei .sh .. aber ich würde diese Option nicht bevorzugen, da dieser Pfad dynamisch ist. -Its ändert sich regelmäßig: /. Ist das In-Direct-Sourcing einer .sh-Datei aus einem anderen .sh / alias-ing-Programm in nicht-interaktiven / no-login-Sitzungen durch Zufall problematisch? Abhi vor 6 Jahren 0