`
xujian161
  • 浏览: 38212 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

jsch(Java Secure Channel)

    博客分类:
  • java
阅读更多

    JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可以将它的功能集成到你自己的 程序中。此外,JSch依赖JavaTM Cryptography Extension (JCE)

 

    JSch主页http://www.jcraft.com/jsch/

 

    其实,熟悉ant或多或少会知道。ant的task,sshexec和scp是支持JSch的。通过ant使用的方式特别简单,可以参考

scp:http://ant.apache.org/manual/OptionalTasks/scp.html

sshexec:http://ant.apache.org/manual/OptionalTasks/sshexec.html

 

    由于我需要把JSch整合到自己开发的系统来达到登录、访问远程服务器的需求。我是通过程序的方式来完成的。

 

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

 

    try{
      JSch jsch=new JSch();
      String user;//用户名

      String password;//密码

      String host; //主机
      String port;//端口

      Session session=jsch.getSession(user, host, port);

 

      UserInfo ui=new DefaultUserInfo();

      session.setPassword(password)
      session.setUserInfo(ui);
      session.connect();

 

       String command;//登录后执行的命令

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

      channel.disconnect();
      session.disconnect();

 

    } catch (JSchException e) {

            channel.disconnect();
            session.disconnect();
            e.printStackTrace();
        }

 

  public static class DefaultUserInfo implements UserInfo, UIKeyboardInteractive{

    public String getPassphrase() {   
        return null;
    }

    public String getPassword() {
        return null;
    }

    public boolean promptPassphrase(String message) {
        return false;
    }

    public boolean promptPassword(String message) {
        return false;
    }

    public boolean promptYesNo(String message) {
        return false;
    }

    public void showMessage(String message) {
       
    }

    public String[] promptKeyboardInteractive(String destination, String name, String instruction, String[] prompt, boolean[] echo) {
        return null;
    }
}


 

分享到:
评论
2 楼 xujian161 2008-11-11  
benlsoft 写道

请教下,这个JSch怎么执行批量的命令?我测试了下,好象只能执行一个命令。

你说的执行批量的命令,我的理解两种情况。比如 1.执行mkdir,大批量执行,这样只需要迭代多次执行即可。2.执行useradd命令,需要和系统交互的情况。这种情况稍微复杂点。就是通过jsch的输入,输出流来执行的。
1 楼 benlsoft 2008-11-04  
请教下,这个JSch怎么执行批量的命令?我测试了下,好象只能执行一个命令。

相关推荐

Global site tag (gtag.js) - Google Analytics