隨筆-314  評(píng)論-209  文章-0  trackbacks-0
        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 = '$';// 普通用戶結(jié)束   
        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.         // 根據(jù)root用戶設(shè)置結(jié)束符   
        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.      * 讀取分析結(jié)果  
        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.      * 向目標(biāo)發(fā)送命令字符串  
        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.      * 關(guān)閉連接  
        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( "啟動(dòng)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( "顯示結(jié)果" );   
        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. }  
        140. posted on 2010-09-29 15:56 xzc 閱讀(4438) 評(píng)論(0)  編輯  收藏 所屬分類: Javalinux/unix
          主站蜘蛛池模板: 大同市| 滨海县| 上饶县| 镇赉县| 拜城县| 永昌县| 吉林市| 崇左市| 彭阳县| 托克托县| 平阳县| 济宁市| 婺源县| 佛学| 天祝| 宿州市| 五原县| 乌海市| 吴堡县| 宾阳县| 南投市| 哈巴河县| 镶黄旗| 招远市| 龙海市| 三亚市| 克什克腾旗| 永仁县| 桓台县| 怀安县| 平度市| 徐水县| 浏阳市| 满城县| 青河县| 五峰| 旌德县| 宁乡县| 江油市| 岑溪市| 玛曲县|