如何从java应用程序在远程机器上运行perl脚本?

如何从java应用程序在远程机器上运行perl脚本?,java,perl,Java,Perl,嗨,我在一个java应用程序中工作。我需要从本地机器(windows)执行一个perl脚本(linux),它位于java应用程序的远程机器中。我需要自动完成这个过程,不需要人工干预。现在我将清楚地解释这个过程,目前要运行perl脚本,我只需打开putty窗口,连接到远程机器并执行perl脚本 现在我想通过点击一个按钮自动完成上面解释的过程。因此,当我单击一个按钮时,它应该调用一个连接到远程机器的函数,然后执行perl脚本。请帮助我解决这个问题。我需要尽快用java编写此代码。您可以使用与手动操作

嗨,我在一个java应用程序中工作。我需要从本地机器(windows)执行一个perl脚本(linux),它位于java应用程序的远程机器中。我需要自动完成这个过程,不需要人工干预。现在我将清楚地解释这个过程,目前要运行perl脚本,我只需打开putty窗口,连接到远程机器并执行perl脚本


现在我想通过点击一个按钮自动完成上面解释的过程。因此,当我单击一个按钮时,它应该调用一个连接到远程机器的函数,然后执行perl脚本。请帮助我解决这个问题。我需要尽快用java编写此代码。

您可以使用与手动操作相同的过程,通过使用ssh库,您可以创建到服务器的安全连接并执行所需的脚本


这里列出了一些您可以使用的JavaSSH库

导入Jcraft jar并运行以下代码:

package package1;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;


public class ConnExec 
{
    public void connExec()
    {
        String host="devHostIP.sName.dev";
        String user="UN";
        String password="PWD";
        String commandStr = "ls /local/dev/folder/inbound";
        String line;

        try
        {
            java.util.Properties config = new java.util.Properties(); 
            config.put("StrictHostKeyChecking", "no");
            JSch jsch = new JSch();
            Session session=jsch.getSession(user, host, 22);
            session.setPassword(password);
            session.setConfig(config);
            session.connect();
            System.out.println("Connected to the server.....\n");

            Channel channel=session.openChannel("exec");
            channel.setInputStream(null);
            ((ChannelExec)channel).setCommand(commandStr);

            InputStream in=channel.getInputStream();
            channel.connect();

            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            while ((line = reader.readLine()) != null)
            {
                System.out.println(line.toString());
            }

            channel.disconnect();
            session.disconnect();
            System.out.println("Terminated.....\n");

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }

}

你可以在这里找到JSch的好例子:谢谢你的回复,这里有一些关于JSch的文档或教程,我做了一些研究,但似乎没有