posts - 495,comments - 227,trackbacks - 0
          模擬終端顯示

          package test.tomcat;

          import java.io.BufferedReader;
          import java.io.InputStream;
          import java.io.InputStreamReader;
          import java.io.OutputStream;
          import java.util.Arrays;

          import ch.ethz.ssh2.Connection;
          import ch.ethz.ssh2.Session;

          /**
           * @author simone (wangxinsh55@126.com)
           */
          public class SshTerm {
              private static final String hostname = "IP";
              private static final String userid = "userid";
              private static final String password = "password";
              
              private static String keyBuf = "hogehogehoge";
              
              public static void main(String[] arg) throws Exception {
                  Connection con = new Connection(hostname);
                  con.connect();
                  boolean ret = con.authenticateWithPassword(userid, password);
                  if (!ret) {
                      System.out.println("loggin error!");
                  }
                  Session session = con.openSession();
                  session.requestDumbPTY();
                  session.startShell();
                  OutputStream os = session.getStdin();
                  
                  Thread t1 = new Std(session.getStdout());
                  Thread t2 = new Std(session.getStderr());
                  
                  t1.start();
                  t2.start();
                  
                  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                  while (true) {
                      keyBuf = br.readLine();
                      keyBuf = keyBuf += "\r";
                      byte[] buf = keyBuf.getBytes();
                      os.write(buf, 0, buf.length);
                      if (keyBuf.equals("exit" + "\r")) {
                          session.close();
                          con.close();
                          System.exit(0);
                      }
                  }
              }
              
              public static String getKeyBuf() {
                  return keyBuf;
              }
          }

          class Std extends Thread {
              private InputStream is;
              private final byte[] buf1 = new byte[4096];
              private final byte[] buf2 = new byte[2048];
              
              public Std() {
              }
              
              public Std(InputStream is) {
                  this.is = is;
              }
              
              @Override
              public void run() {
                  while (true) {
                      try {
                          Arrays.fill(buf1, (byte) 0x00);
                          Arrays.fill(buf2, (byte) 0x00);
                          int n = is.read(buf1);
                          Thread.sleep(500);
                          int len = is.read(buf2);
                          System.arraycopy(buf2, 0, buf1, n, len);
                          len += n;
                          if (len > 0) {
                              String st = new String(buf1, "UTF-8");
                              st = st.replaceAll("\00", "");
                              System.out.print(st);
                          }
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                  }
              }
          }
          posted on 2013-01-18 17:47 SIMONE 閱讀(1127) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 仪征市| 连城县| 玉环县| 景泰县| 长葛市| 布拖县| 林州市| 怀宁县| 保靖县| 望城县| 广昌县| 鲜城| 中宁县| 同德县| 留坝县| 郯城县| 通化县| 新宾| 安乡县| 尉犁县| 古田县| 岳池县| 新营市| 东至县| 高邑县| 乌兰浩特市| 东乌| 车致| 齐齐哈尔市| 雷州市| 高要市| 韶关市| 若尔盖县| 石家庄市| 宜丰县| 宁安市| 绥棱县| 沽源县| 常熟市| 石家庄市| 盐池县|