Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问UNIX服务器并从java应用程序运行shell脚本_Java_Unix_Ssh - Fatal编程技术网

访问UNIX服务器并从java应用程序运行shell脚本

访问UNIX服务器并从java应用程序运行shell脚本,java,unix,ssh,Java,Unix,Ssh,我有一个要求,即我必须访问unix服务器,并且在该服务器上,我必须使用java应用程序中的一些参数运行shell脚本。 请举例说明一些解决方案 我试过一些东西,但不起作用 SshWrapper ssh = new SshWrapper(); try { ssh.connect("10.206.19.80", 22); ssh.login("*****","*****"); ssh.setPrompt("c898vqz:~");

我有一个要求,即我必须访问unix服务器,并且在该服务器上,我必须使用java应用程序中的一些参数运行shell脚本。 请举例说明一些解决方案

我试过一些东西,但不起作用

SshWrapper ssh = new SshWrapper();
 try {  
        ssh.connect("10.206.19.80", 22);  
        ssh.login("*****","*****");  

        ssh.setPrompt("c898vqz:~");  
        ssh.waitfor("#");
        System.out.println("PWD**********"+ssh.send("pwd"));  

        ssh.disconnect();
        System.out.println(ssh.getClass());
    } catch (java.io.IOException e) {  
        e.printStackTrace();  
    }

ssh.send(“pwd”)获取
null
您可以使用
ssh
组件进行远程连接和shell命令调用:

import com.jcraft.jsch.*
从我的旧代码:

JSch jsch = new JSch();

String command = "/tmp/myscript.sh";
Session session = jsch.getSession(user, host, 22);
session.connect();

Channel channel = session.openChannel("exec");
((ChannelExec)channel).setCommand(command);

channel.setInputStream(null);
((ChannelExec)channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
channel.connect();

byte[] tmp = new byte[1024];
while (true) {
  while (in.available() > 0) {
      int i = in.read(tmp, 0, 1024);
      if (i < 0) {
          break;
      }
      System.out.print(new String(tmp, 0, i));
  }
  if (channel.isClosed()) {
      if (channel.getExitStatus() == 0) {
          System.out.println("Command executed successully.");
      }
      break;
  }
}
channel.disconnect();
session.disconnect();
JSch-JSch=new-JSch();
String命令=“/tmp/myscript.sh”;
Session Session=jsch.getSession(用户,主机,22);
session.connect();
Channel=session.openChannel(“exec”);
((ChannelExec)channel).setCommand(command);
channel.setInputStream(空);
((ChannelExec)channel.setErrStream(System.err);
InputStream in=channel.getInputStream();
java.util.Properties config=new java.util.Properties();
配置放置(“检查”、“否”);
channel.connect();
字节[]tmp=新字节[1024];
while(true){
while(in.available()>0){
inti=in.read(tmp,0,1024);
if(i<0){
打破
}
系统输出打印(新字符串(tmp,0,i));
}
if(channel.isClosed()){
if(channel.getExitStatus()==0){
System.out.println(“成功执行命令”);
}
打破
}
}
通道断开();
session.disconnect();
您还可以通过
session.openChannel(“sftp”)
轻松传输文件


哎呀。。在
java
中,它比在
ruby
python
:)中太冗长了。

您可以使用
SSH
组件进行远程连接和shell命令调用:

import com.jcraft.jsch.*
从我的旧代码:

JSch jsch = new JSch();

String command = "/tmp/myscript.sh";
Session session = jsch.getSession(user, host, 22);
session.connect();

Channel channel = session.openChannel("exec");
((ChannelExec)channel).setCommand(command);

channel.setInputStream(null);
((ChannelExec)channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
channel.connect();

byte[] tmp = new byte[1024];
while (true) {
  while (in.available() > 0) {
      int i = in.read(tmp, 0, 1024);
      if (i < 0) {
          break;
      }
      System.out.print(new String(tmp, 0, i));
  }
  if (channel.isClosed()) {
      if (channel.getExitStatus() == 0) {
          System.out.println("Command executed successully.");
      }
      break;
  }
}
channel.disconnect();
session.disconnect();
JSch-JSch=new-JSch();
String命令=“/tmp/myscript.sh”;
Session Session=jsch.getSession(用户,主机,22);
session.connect();
Channel=session.openChannel(“exec”);
((ChannelExec)channel).setCommand(command);
channel.setInputStream(空);
((ChannelExec)channel.setErrStream(System.err);
InputStream in=channel.getInputStream();
java.util.Properties config=new java.util.Properties();
配置放置(“检查”、“否”);
channel.connect();
字节[]tmp=新字节[1024];
while(true){
while(in.available()>0){
inti=in.read(tmp,0,1024);
if(i<0){
打破
}
系统输出打印(新字符串(tmp,0,i));
}
if(channel.isClosed()){
if(channel.getExitStatus()==0){
System.out.println(“成功执行命令”);
}
打破
}
}
通道断开();
session.disconnect();
您还可以通过
session.openChannel(“sftp”)
轻松传输文件


哎呀。。在
java
中,它比在
ruby
python
中要冗长得多:)

可能重复的是,有没有人对此问题有任何解决方案,而不是否决这个问题。如果您需要任何其他信息,我已经准备好提供。@AniketThakur:请参考我的更新。@sanbhat看起来不像是重复的。link中的代码运行在需要运行命令的同一服务器上,而此问题询问如何连接到不同的unix服务器。是否有人对此问题有任何解决方案,而不是对此问题投反对票。如果您需要任何其他信息,我已经准备好提供。@AniketThakur:请参考我的更新。@sanbhat看起来不像是重复的。链接中的代码运行在需要运行命令的同一服务器上,而此问题询问如何连接到不同的unix服务器。我试图使用此代码运行
FNDLOAD
实用程序(已安装在服务器上)。但它给了我
命令未找到
错误。您能否帮助运行
FNDLOAD
命令。我正在尝试使用此代码运行
FNDLOAD
实用程序(已安装在服务器上)。但它给了我
命令未找到
错误。您可以帮助运行
FNDLOAD
命令吗?请不要只发布代码而不在“能够澄清您的代码”中指定代码i详细信息。请不要只发布代码而不在“能够澄清您的代码”中指定代码i详细信息。