Java远程调用Linuc命令例子
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.io.Serializable;
import java.net.SocketException;
import org.apache.commons.net.telnet.TelnetClient;
public class NetTelnet implements Serializable
{
private static final long serialVersionUID = 1896318870151927893L;
private TelnetClient telnet = new TelnetClient();
private InputStream in;
private PrintStream out;
private char prompt = '$';
public NetTelnet(String ip, int port, String user, String password)
throws SocketException, IOException
{
this.telnet.connect(ip, port);
this.in = this.telnet.getInputStream();
this.out = new PrintStream(this.telnet.getOutputStream());
this.prompt = (user.equals("root") ? '#' : '$');
System.out.println("test....");
login(user, password);
}
public void login(String user, String password) throws IOException
{
readUntil("login:");
write(user);
readUntil("Password:");
write(password);
readUntil(this.prompt + " ");
}
public String readUntil(String pattern) throws IOException
{
char lastChar = pattern.charAt(pattern.length() - 1);
StringBuffer sb = new StringBuffer();
char ch = (char) this.in.read();
while (true)
{
sb.append(ch);
if ((ch == lastChar) && (sb.toString().endsWith(pattern)))
{
return sb.toString();
}
ch = (char) this.in.read();
}
}
public void write(String value)
{
this.out.println(value);
this.out.flush();
}
public String sendCommand(String command) throws IOException
{
write(command);
return readUntil(this.prompt + " ");
}
public void disConnection() throws IOException
{
this.telnet.disconnect();
}
public static void main(String[] args)
{
try
{
System.out.println("启动Telnet...");
String ip = "10.71.181.227";
int port = 23;
String user = "root";
String password = "ngbss123";
NetTelnet telnet = new NetTelnet(ip, port, user, password);
telnet.sendCommand("export LANG=en");
String r1 = telnet.sendCommand("who");
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.disConnection();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}