您好我正在使用Java应用程序。我需要从本地机器(windows)执行一个perl脚本(linux),它位于java应用程序的远程机器中。我需要自动完成这个过程,没有手动交互。现在我将清楚地解释这个过程,目前运行perl脚本,我只需打开putty窗口,连接到远程机器并执行perl脚本。
现在我想通过点击按钮自动完成上面说明的过程。因此,当我单击一个按钮时,它应该调用一个连接到远程机器的函数,然后执行perl脚本。请帮我解决这个问题。我希望尽快在java中使用这段代码。
答案 0 :(得分:2)
您可以使用与手动库相同的步骤,通过使用ssh库,您可以创建与服务器的安全连接并执行所需的脚本。
这个question列出了一些你可以使用的java ssh库。
答案 1 :(得分:0)
导入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();
}
}
}