Ganymed SSH-2 for Javaを適用してサーバーの状態を判断する

1767 ワード

Ganymed SSH-2 for Javaを適用してサーバーの状態を判断する:
これまでの多くの章では,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などを返すので、これらのステータスコードに基づいてこのサービスが正常であるかどうかを知ることができ、タイミングが必要であれば、それをタイミングタスクに組み入れ、関連情報を更新するたびにすればよい.