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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 云阳县| 胶州市| 阿拉尔市| 建始县| 瓮安县| 清流县| 曲水县| 苏尼特左旗| 沾益县| 大方县| 淄博市| 烟台市| 安化县| 赣州市| 永安市| 务川| 吉隆县| 商水县| 稷山县| 遵义市| 内黄县| 故城县| 宣汉县| 盘锦市| 噶尔县| 赤峰市| 林芝县| 原平市| 荔浦县| 黄大仙区| 溧阳市| 秭归县| 乡城县| 隆尧县| 上虞市| 兴安县| 沙洋县| 成都市| 武冈市| 湖南省| 山东省|