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

            }

        }


    }

    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值