Ich bin in der Lage, ein Shell-Skript auf einem Remote-Server mithilfe von JSch exec mithilfe der hier bereitgestellten hilfreiche Beispiele auszuführen. Ich kann sehen, dass die Echos vom Skript zurückgegeben werden und der Beendigungsstatus am Ende ist 0 - alles sieht auf den ersten Blick gut aus.Aufruf eines Shell-Skripts mit SSH-Exec-Kanal, aber ignoriert Aufrufe anderer Shell-Skripts
Das Problem besteht jedoch darin, dass das Skript selbst zu anderen Skripten aufruft, und diese scheinen vollständig ignoriert zu werden, einfach übersprungen.
Das Skript ruft andere Skripte direkt auf. d. h. die erste Zeile des Skripts ist etwas wie:
script_two.sh
Könnte jemand irgendeinen Weg empfehlen, dies zu überwinden? Ich habe begonnen, in den "Shell" -Kanal statt "exec" zu schauen, aber das kann in meinem Fall schwierig sein, denn bevor dem Benutzer Zugang zum System gegeben wird, präsentiert der Server ein Formular zum Ausfüllen (Name, Nummer, warum sind Sie melden sich an, etc) - Ich war noch nicht in der Lage, dieses Formular programmatisch auszufüllen und zu senden, also würde ich gerne bei exec bleiben, wenn möglich.
Ich bin neu in all dem, also jede Hilfe/Beratung wäre sehr willkommen!
Code-Schnipsel unten. Wie gesagt, das scheint zu funktionieren, aber das sh-Skript, das durch "scriptFileName" im Code repräsentiert wird, ruft andere sh-Skripte auf, die nicht ausgeführt werden.
Vielen Dank im Voraus für jede Hilfe, J
JSch jsch = new JSch();
JSch.setConfig(FileTransferConstants.STRICT_HOST_KEY_CHECKING, "no");
Session session = jsch.getSession(username, hostIPAddress, port);
session.setPassword(password);
session.connect();
//create the execution channel over the session
ChannelExec channelExec = (ChannelExec)session.openChannel("exec");
channelExec.setCommand(scriptFileName);
channelExec.connect();
* "ruft zu anderen Skripten auf, und diese scheinen komplett ignoriert zu werden, nur übersprungen" * - Wie ruft das Skript andere Skripte auf? Wie werden sie ignoriert? Führt der "Aufruf" zu einer Fehlermeldung? –
Danke für die Antwort Martin. Das Skript ruft andere Skripte direkt auf. Das heißt, die erste Zeile des Skripts sieht ungefähr wie folgt aus: - script_two.sh Wenn ich das Skript manuell als denselben Benutzer ausführe, funktioniert es gut, aber es scheint ignoriert zu werden, wenn es mit Jsh-Shell remote ausgeführt wird. –