bibibobo 发表于 2009-1-14 08:27:04

检测SSH服务是否正常工作代码

连接检测SSH服务是否正常工作
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.InterruptedIOException;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.NoRouteToHostException;
import java.net.Socket;
import java.net.UnknownHostException;
public class TestSSH ...{
    public static void main(String[] args)...{
      int retry = 1;
      int timeout = 3000;
      // Port
      //
      int port = 22;
      String strBannerMatch = "SSH";
      // Get the address instance.
      //
      InetAddress ipv4Addr = null;
      try ...{
            ipv4Addr = InetAddress.getByName("fedora.unix-center.net");
      } catch (UnknownHostException e1) ...{
            // TODO Auto-generated catch block
            e1.printStackTrace();
      }
      // Give it a whirl
      //
      int serviceStatus = -1;
      long responseTime = -1;
      for (int attempts = 0; attempts <= retry && serviceStatus != 1; attempts) ...{
            Socket socket = null;
            try ...{
create a connected socket
long sentTime = System.currentTimeMillis();
socket = new Socket();
socket.connect(new InetSocketAddress(ipv4Addr, port), timeout);
socket.setSoTimeout(timeout);
System.out.println("SshMonitor: connected to host: "   ipv4Addr   " on port: "   port);
               
// We’re connected, so upgrade status to unresponsive
serviceStatus = -2;
                if (strBannerMatch == null || strBannerMatch.equals("*")) ...{
                  serviceStatus = 1;
                  break;
                }
                BufferedReader rdr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                // Tokenize the Banner Line, and check the first
                // line for a valid return.
                String response = rdr.readLine();
                responseTime = System.currentTimeMillis() - sentTime;
                if (response == null)
                  continue;
                System.out.println("poll: banner = "   response);
                System.out.println("poll: responseTime= "   responseTime   "ms");
                if (response.indexOf(strBannerMatch) > -1) ...{
                  serviceStatus = 1;
                } else
                  serviceStatus = -1;
            } catch (Exception e) ...{
                e.printStackTrace();
            } finally ...{
                try ...{
                  // Close the socket
if (socket != null)
                        socket.close();
                } catch (IOException e) ...{
                  e.printStackTrace();
                }
            }
      }
    }
}
页: [1]
查看完整版本: 检测SSH服务是否正常工作代码