如何从Windows上的Java程序与Unix终端进行通信

时间:2017-08-17 14:04:39

标签: java linux unix ssh

我正在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命令并调整代码?

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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

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