2013-07-24 94 views
1

我正在寫一個java代碼來連接到使用java-ganymed插件的Unix遠程服務器(也嘗試使用JSch)。通過Java與環境變量的SSH

Connection conn = new Connection("host"); 
    conn.connect(); 
    boolean testAuth = conn.authenticateWithPassword("user", "pwd"); 
    Session sess = conn.openSession(); 
    sess.execCommand(Commands); //"Commands" is a string variable with "sh" command. 

我需要運行位於遠程服務器上的shell腳本,該腳本使用該登錄名的一些環境變量。我的登錄成功,腳本執行但不完成。我檢查了與運行像Putty等交互式登錄shell(使用'env'命令)相比,環境變量未完全加載。

我試着在我的腳本之前運行/ etc/profile,.bashrc等。腳本前進一步,但再次停止。所以很明顯,有幾個環境變量被加載,但不是全部。我需要一個解決方法來確保爲Java非交互式會話加載所有環境變量。我沒有遠程服務器的root權限。

感謝, 阿里亞

回答

0

,而不是試圖運行/etc/profile.bashrc,請嘗試使用它們作爲源腳本。執行此作爲腳本的一部分,或者命令:

. .bashrc 
. /etc/profile 
. /etc/environment 

或任何其他相關的配置腳本(點廣告的文件beggining很重要)。

+0

感謝您的回覆。我試圖將這些添加到我的shell腳本的開頭。再次,有幾個未初始化的環境變量。我不確定哪些。無論如何,我會檢查哪些是我需要明確運行的,哪些運行在正常的交互式登錄上。 – AryA