我正在使用此處提供的有用示例管理使用JSch exec在遠程服務器上執行shell腳本。我可以看到從腳本返回的回聲,最後的退出狀態爲0 - 因此乍一看都很好看。使用SSH exec通道調用shell腳本,但忽略對其他shell腳本的調用
但是,問題在於腳本本身調用了其他腳本,而這些腳本似乎完全被忽略,只是跳過了。
腳本直接調用其他腳本。即腳本的第一行是這樣的:
script_two.sh
任何人都可以建議的任何方式來克服這一點?我確實開始研究「shell」通道而不是「exec」,但是這對我來說可能會很棘手,因爲在給用戶訪問系統之前,服務器提供一個表單來填寫(名稱,數字,爲什麼是你登錄等) - 我還沒有能夠以編程方式填寫並提交此表單,因此如果可能,我想堅持使用exec。
我對這一切都很陌生,所以任何幫助/建議都將是最受歡迎的!
下面的代碼片段。正如我所說,這似乎工作,但由「scriptFileName」代表的sh腳本代碼調用其他sh腳本,並且不會執行這些腳本。
提前爲任何幫助非常感謝,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();
*「向其他腳本發出呼叫,並且這些腳本似乎完全被忽略,只是跳過」* - 腳本如何調用其他腳本?他們如何被忽略? 「召喚」是否產生任何錯誤信息? –
感謝您的回覆Martin。該腳本直接調用其他腳本。即腳本的第一行如下所示: - script_two.sh當我以同一用戶的身份手動運行腳本時,它可以正常工作,但在使用Jsch shell遠程運行時似乎忽略它。 –