【问题标题】:SSH via Java with Environment Variables使用环境变量通过 Java 进行 SSH
【发布时间】:2013-07-23 19:42:26
【问题描述】:

我正在编写一个 java 代码来使用 java-ganymed 插件(也尝试使用 JSch)连接到 Unix 远程服务器。

    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权限。

谢谢, 艾莉亚

【问题讨论】:

    标签: java shell variables ssh environment


    【解决方案1】:

    不要尝试运行/etc/profile.bashrc,而是尝试将它们用作源脚本。将此作为脚本或命令的一部分执行:

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

    或任何其他相关的配置脚本(文件开头的点号很重要)。

    【讨论】:

    • 感谢您的回复。我尝试将这些添加到我的 shell 脚本的开头。同样,有一些未初始化的环境变量。我不确定是哪些。无论如何我检查哪些是我需要明确运行的,它们在正常的交互式登录上运行。
    猜你喜欢
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多