【问题标题】:How to communicate with a Unix terminal from a Java program on Windows如何从 Windows 上的 Java 程序与 Unix 终端通信
【发布时间】:2018-01-26 00:00:27
【问题描述】:

我正在 Windows PC 上编写一个 Java 程序,它需要与我们公司的 Unix 机器上的多个应用程序通信。

我开发的程序包含一个带有 JButton 的 Swing 接口。目前,当我点击按钮时,我可以在我的机器上选择一个目录,如“C:\Users\MyUserName\Documents”。这是代码示例:

selectButton.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent arg0) {

            // Choose a directory 
            JFileChooser chooser = new JFileChooser();
            chooser.setCurrentDirectory(new java.io.File("."));
            chooser.setDialogTitle("choosertitle");
            chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            chooser.setAcceptAllFileFilterUsed(false);

            if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
              System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory());
              System.out.println("getSelectedFile() : " + chooser.getSelectedFile());
            } else {
              System.out.println("No Selection ");
            }
        }
    });

现在我想在另一台使用 Unix 的机器上选择一个目录(假设机器名称是“unix-service”),而不是我本地机器上的一个目录。所以当我点击按钮时:

  • 我需要知道我们公司的用户组才能继续。在 Unix 终端中,我们可以使用命令“echo $WORK_GROUP”来完成。我想将此用户的组保存为变量“user_group”

  • 我想在那个 Unix 机器上选择一个目录“workgroug/user_group/username/”。

如何使用 ssh 命令和调整我的代码来做到这一点?

我希望一切都清楚并得到解释,如果您需要更多信息,请随时问我。感谢您的宝贵时间。

【问题讨论】:

  • 投票结束过于广泛。您知道可能的解决方案(在 Java 中使用 SSH),但没有尝试实现它。
  • 实际上,我发现了一些 ssh 示例,但似乎没有一个可以做我想做的事或帮助我做我想做的事。这就是为什么我要求确切的问题有一些提示。
  • 我知道你的问题是什么,但你的问题的答案是使用一个执行 ssh 的 Java 库,或者一个执行 scp 或 ftp 的库。答案只是推荐那些库,可以通过谷歌搜索找到。

标签: java linux unix ssh


【解决方案1】:

您可以使用以下库中的 java ssh API 连接到远程盒子。

http://www.jcraft.com/jsch/

这里提供了一个很好的例子来使用 SSH 在远程 Linux/UNIX 系统上执行命令

http://www.jcraft.com/jsch/examples/Exec.java.html

【讨论】:

    【解决方案2】:

    所以,您只需要通过 JAVA 访问一个 unix box。有很多图书馆在做这项工作。 看看这里:http://www.jcraft.com/jsch/

    “JSch 是 SSH2 的纯 Java 实现。JSch 允许你连接到一个 sshd 服务器并使用端口转发、X11 转发、文件传输等,你可以将它的功能集成到你自己的 Java 程序中。”

    【讨论】:

    • 不是投反对票的理由,我正在输入问题,而另一个问题首先出现。不要发脾气和礼貌的人!
    • 我刚刚对你投了赞成票 ;)。我们都对解决方案有相同的想法。
    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 2012-03-23
    相关资源
    最近更新 更多