2013-04-25 57 views
1

我正在使用JSch將我的java連接到遠程unix服務器。下一步將是運行一個使用一些內部環境變量的shell腳本(.sh)。JSch使用Unix遠程服務器環境變量

在終端上直接執行shell腳本正常工作,但通過JSch從java程序調用它並不能識別這些變量。我如何解決這個問題。對Java沒有經驗。發佈樣本代碼 -

JSch jsch = new JSch(); 
    Session session = jsch.getSession("username", "server", 22); 
    UserInfo ui = new SftpUserInfo(); 
    session.setUserInfo(ui); 
    session.setPassword("mypass"); 
    session.connect(); 

    ChannelExec channelExec = (ChannelExec)session.openChannel("exec"); 

    InputStream in = channelExec.getInputStream(); 


    channelExec.setCommand("sh /filePath/myShellScript.sh"); 
    channelExec.connect(); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
    String line; 

    while ((line = reader.readLine()) != null) 
    { 
     System.out.println(line); 
    } 

PS:環境變量是在用戶的根文件夾(/家/用戶名/)

由於設置在 「.profile文件」,

阿里亞

+0

您是否找到解決此問題的方法? – Neron 2013-09-02 06:17:48

+0

@Neron您是否找到解決這個問題的方法? – Mahesha999 2016-06-27 11:38:56

回答

0

我使用JSch執行存儲在我的服務器上的jar。該jar使用允許修改環境變量的ProcessBuilder類。例如:

ProcessBuilder pb = new ProcessBuilder("sh /filePath/myShellScript.sh"); 
Map<String, String> env = pb.environment(); 
env.put("profile","/home/username/");