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