首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java中telnet到远程服务器,其后执行cmd命令

2014-01-03 
java中telnet到远程服务器,然后执行cmd命令package place.in.javaeyeimport java.io.InputStreamimport

java中telnet到远程服务器,然后执行cmd命令

package place.in.javaeye;    import java.io.InputStream;  import java.io.PrintStream;    import org.apache.commons.net.telnet.TelnetClient;  public class Shell  {      private TelnetClient telnet = new TelnetClient();        private InputStream in;        private PrintStream out;        private char prompt = '$';// 普通用户结束        public Shell(String ip, int port, String user, String password)      {          try          {              telnet.connect()(ip, port);              in = telnet.getInputStream();              out = new PrintStream(telnet.getOutputStream());              // 根据root用户设置结束符              this.prompt = user.equals("root") ? '#' : '>';              login(user, password);          }          catch (Exception e)          {              e.printStackTrace();          }      }        /**      * 登录      *      * @param user      * @param password      */      public void login(String user, String password)      {  //        read()Until("login:");          read()Until("login:");          write(user);          read()Until("Password:");          write(password);          readUntil(prompt + "");      }        /**      * 读取分析结果      *      * @param pattern      * @return      */      public String readUntil(String pattern)      {          try          {              char lastChar = pattern.charAt(pattern.length() - 1);              StringBuffer sb = new StringBuffer();              char ch = (char)in.read();              while (true)              {                  sb.append(ch);                  if (ch == lastChar)                  {                      if (sb.toString().endsWith(pattern))                      {                          return sb.toString();                      }                  }                  ch = (char)in.read();                  System.out.print(ch);              }          }          catch (Exception e)          {              e.printStackTrace();          }          return null;      }        /**      * 写操作      *      * @param value      */      public void write(String value)      {          try          {              out.println(value);              out.flush();          }          catch (Exception e)          {              e.printStackTrace();          }      }        /**      * 向目标发送命令字符串      *      * @param command      * @return      */      public String sendCommand(String command)      {          try          {              write(command);              return readUntil(prompt + "");          }          catch (Exception e)          {              e.printStackTrace();          }          return null;      }        /**      * 关闭连接      */      public void disconnect()()      {          try          {              telnet.disconnect()();          }          catch (Exception e)          {              e.printStackTrace();          }      }      public static void main(String[] args) {          TelnetClient telnet = new TelnetClient();          try {              Shell she =new Shell("10.**.***.***", 23, "***", "***");              System.out.println(she);              System.out.println(she.sendCommand("ls"));              she.disconnect();            }catch (Exception e) {              // TODO: handle exception          }        }  }

热点排行