- /**
- * commons-net-2.0.jar是工程依赖包
- */
- package telnet2;
- import java.io.InputStream;
- import java.io.PrintStream;
- import org.apache.commons.net.telnet.TelnetClient;
- /**
- * @descript NetTelenet.java
- * @author sinclair
- * @date Jun 10, 2010
- */
- public class NetTelnet {
- private TelnetClient telnet = new TelnetClient();
- private InputStream in;
- private PrintStream out;
- private char prompt = '$';// 普通用户结束
- public NetTelnet( 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 ) {
- readUntil( "login:" );
- write( user );
- readUntil( "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();
- }
- } 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 ) {
- try {
- System.out.println( "启动Telnet..." );
- String ip = "192.168.0.11";
- int port = 23;
- String user = "user";
- String password = "111111";
- NetTelnet telnet = new NetTelnet( ip, port, user, password );
- telnet.sendCommand( "export LANG=en" );
- String r1 = telnet.sendCommand( "cd /home/project/" );
- String r2 = telnet.sendCommand( "pwd" );
- String r3 = telnet.sendCommand( "sh a.sh" );
- System.out.println( "显示结果" );
- System.out.println( r1 );
- System.out.println( r2 );
- System.out.println( r3 );
- telnet.disconnect();
- } catch ( Exception e ) {
- e.printStackTrace();
- }
- }
- }
Java通过Telnet连接执行shell脚本 【转】
最新推荐文章于 2016-11-13 22:03:34 发布