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();
        }
    }
}

猜你喜欢

转载自xieguowei123485.iteye.com/blog/1527014