Ganymed SSH-2 for Javaを適用してサーバーの状態を判断する
Ganymed SSH-2 for Javaを適用してサーバーの状態を判断する:
これまでの多くの章では,Ganymed SSH-2 for Javaのapiをどのように運用するかについて述べてきたが,基本的に主なプレゼンテーションが行われている.
次に,実用的に役立つ機能点を応用の冒頭として,この実用的な仕事における意義を述べる.
1台のサーバが,その状態が正常であるか,アクセス可能であるか,ログインしたくないなどの操作を行う場合に,一定時間おきにサービス状態を検出することで実現できる.
テストコード:
この結果はhttpステータスコード:200 404などを返すので、これらのステータスコードに基づいてこのサービスが正常であるかどうかを知ることができ、タイミングが必要であれば、それをタイミングタスクに組み入れ、関連情報を更新するたびにすればよい.
これまでの多くの章では,Ganymed SSH-2 for Javaのapiをどのように運用するかについて述べてきたが,基本的に主なプレゼンテーションが行われている.
次に,実用的に役立つ機能点を応用の冒頭として,この実用的な仕事における意義を述べる.
1台のサーバが,その状態が正常であるか,アクセス可能であるか,ログインしたくないなどの操作を行う場合に,一定時間おきにサービス状態を検出することで実現できる.
/**
*
*
* @param host
* @param username
* @param password
* @param cmd
* @param port
* @return
* @throws IOException
*/
public static String queryServerStatus(String host, String username,
String password,
String cmd, int port) throws IOException {
if (logger.isInfoEnabled()) {
logger.info("running SSH cmd [" + cmd + "]");
}
Connection conn = null;
Session sess = null;
InputStream stdOut = null;
String outStr = "";
try {
conn = getOpenedConnection(host, username, password, port);
sess = conn.openSession();
sess.execCommand(cmd);
stdOut = new StreamGobbler(sess.getStdout());
outStr = FileWRUtil.inputStream2String(stdOut,
ConstantsUtil.CHARSET);
sess.waitForCondition(ChannelCondition.EXIT_STATUS, 60000);
} finally {
if (null != sess) {
sess.close();
sess = null;
}
if (null != conn) {
conn.close();
conn = null;
}
IOUtils.closeQuietly(stdOut);
}
return outStr;
}
テストコード:
String cmd = "curl -o /dev/null -s -m 10 --connect-timeout 60 -w %{http_code} 'http://172.16.18.141:8080/Login.jsp'";
System.out.println(CommandRunner.queryServerStatus("172.16.18.141",
"weblogic", "123456", cmd, 22));
この結果はhttpステータスコード:200 404などを返すので、これらのステータスコードに基づいてこのサービスが正常であるかどうかを知ることができ、タイミングが必要であれば、それをタイミングタスクに組み入れ、関連情報を更新するたびにすればよい.