Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1996058
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 18:27:46

连接检测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();
                }
            }
        }

    }

}

【责编:Ken】

--------------------next---------------------

阅读(227) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~