开启telnet服务:
阿里云服务器默认是不开启telnet服务的,因此我们要先在控制器里面配置一下,具体步骤如下所示:
通过以上步骤,就可以打开23端口,开启Telnet服务;
接下来我们要配置一些文件,具体参见:http://www.jb51.net/article/98670.htm
然后最重要的一点就是,telnet是需要用户名和密码登录的,因此如果你是用“root“登录的,必须要在vi /etc/pam.d/login文件中将“auth [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] pam_securetty.so”禁掉,不然是登陆不上的,或者另外创建一个用户登录;
到上步就基本完成了telnet配置,具体Java代码如下所示:
/**
* commons-net-2.0.jar是工程依赖包 ,需要另行下载
*/
package examples.telnet;
import java.io.InputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient; //下载 commons-net.zip,解压得到commons-net.jar,再把它加到build path里
/**
* @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 = "";
int port = 23;
String user = "";
String password = "";
NetTelnet telnet = new NetTelnet( ip, port, user, password );
telnet.sendCommand( "ifconfig" );
telnet.sendCommand("cd /home");
System.out.println( telnet.sendCommand( "pwd" ));
// 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();
}
}
}
这样就实现了telnet阿里云ubuntu服务器