0

UNIXサーバーにアクセスする必要があり、そのサーバーでJavaアプリケーションのパラメータを使用してシェルスクリプトを実行する必要があります。例を挙げて解決策を提案してください。

私は何かを試しましたが、うまくいきません。

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();  
    }

nullから取得ssh.send("pwd")

4

2 に答える 2

2

SSHコンポーネントJCraftをリモート接続とシェル コマンドの呼び出しに使用できます。

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();

経由でファイルを簡単に転送することもできますsession.openChannel("sftp")

おっと..javaそれはあまりにも冗長です, 例えば in rubyor python:)

于 2013-08-23T11:06:48.247 に答える