Java通过Telnet连接执行shell脚本 【转】

 
  1. /**  
  2.  * commons-net-2.0.jar是工程依赖包   
  3.  */  
  4. package telnet2;   
  5.   
  6. import java.io.InputStream;   
  7. import java.io.PrintStream;   
  8.   
  9. import org.apache.commons.net.telnet.TelnetClient;   
  10.   
  11. /**  
  12.  * @descript NetTelenet.java  
  13.  * @author sinclair  
  14.  * @date Jun 10, 2010  
  15.  */  
  16. public class NetTelnet {   
  17.     private TelnetClient telnet = new TelnetClient();   
  18.     private InputStream in;   
  19.     private PrintStream out;   
  20.     private char prompt = '$';// 普通用户结束  
  21.   
  22.     public NetTelnet( String ip, int port, String user, String password ) {   
  23.     try {   
  24.         telnet.connect( ip, port );   
  25.         in = telnet.getInputStream();   
  26.         out = new PrintStream( telnet.getOutputStream() );   
  27.         // 根据root用户设置结束符   
  28.         this.prompt = user.equals( "root" ) ? '#' : '$';   
  29.         login( user, password );   
  30.     } catch ( Exception e ) {   
  31.         e.printStackTrace();   
  32.     }   
  33.     }   
  34.   
  35.     /**  
  36.      * 登录  
  37.      *   
  38.      * @param user  
  39.      * @param password  
  40.      */  
  41.     public void login( String user, String password ) {   
  42.     readUntil( "login:" );   
  43.     write( user );   
  44.     readUntil( "Password:" );   
  45.     write( password );   
  46.     readUntil( prompt + " " );   
  47.     }   
  48.   
  49.     /**  
  50.      * 读取分析结果  
  51.      *   
  52.      * @param pattern  
  53.      * @return  
  54.      */  
  55.     public String readUntil( String pattern ) {   
  56.     try {   
  57.         char lastChar = pattern.charAt( pattern.length() - 1 );   
  58.         StringBuffer sb = new StringBuffer();   
  59.         char ch = ( char ) in.read();   
  60.         while ( true ) {   
  61.         sb.append( ch );   
  62.         if (ch == lastChar) {   
  63.             if (sb.toString().endsWith( pattern )) {   
  64.             return sb.toString();   
  65.             }   
  66.         }   
  67.         ch = ( char ) in.read();   
  68.         }   
  69.     } catch ( Exception e ) {   
  70.         e.printStackTrace();   
  71.     }   
  72.     return null;   
  73.     }   
  74.   
  75.     /**  
  76.      * 写操作  
  77.      *   
  78.      * @param value  
  79.      */  
  80.     public void write( String value ) {   
  81.     try {   
  82.         out.println( value );   
  83.         out.flush();   
  84.     } catch ( Exception e ) {   
  85.         e.printStackTrace();   
  86.     }   
  87.     }   
  88.   
  89.     /**  
  90.      * 向目标发送命令字符串  
  91.      *   
  92.      * @param command  
  93.      * @return  
  94.      */  
  95.     public String sendCommand( String command ) {   
  96.     try {   
  97.         write( command );   
  98.         return readUntil( prompt + " " );   
  99.     } catch ( Exception e ) {   
  100.         e.printStackTrace();   
  101.     }   
  102.     return null;   
  103.     }   
  104.   
  105.     /**  
  106.      * 关闭连接  
  107.      */  
  108.     public void disconnect() {   
  109.     try {   
  110.         telnet.disconnect();   
  111.     } catch ( Exception e ) {   
  112.         e.printStackTrace();   
  113.     }   
  114.     }   
  115.   
  116.     public static void main( String[] args ) {   
  117.     try {   
  118.         System.out.println( "启动Telnet..." );   
  119.         String ip = "192.168.0.11";   
  120.         int port = 23;   
  121.         String user = "user";   
  122.         String password = "111111";   
  123.         NetTelnet telnet = new NetTelnet( ip, port, user, password );   
  124.         telnet.sendCommand( "export LANG=en" );   
  125.         String r1 = telnet.sendCommand( "cd /home/project/" );   
  126.         String r2 = telnet.sendCommand( "pwd" );   
  127.         String r3 = telnet.sendCommand( "sh a.sh" );   
  128.   
  129.         System.out.println( "显示结果" );   
  130.         System.out.println( r1 );   
  131.         System.out.println( r2 );   
  132.         System.out.println( r3 );   
  133.   
  134.         telnet.disconnect();   
  135.     } catch ( Exception e ) {   
  136.         e.printStackTrace();   
  137.     }   
  138.     }   
  139. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值