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

来源: 作者:佚名 2008-04-17 出处:pcdog.com

  • .net
  • java
  • 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();
                    }
                }
            }

        }

    }


    更多内容请看PCdog.com--SSH技术手册SSH实战应用SSH相关文章专题
    上一篇:分析 Tomcat catalina.bat 脚本
    下一篇:Struts 2.0的新特性