/*
* (C) 2007-2012 Alibaba Group Holding Limited.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* Authors:
* wuhua <wq163@163.com> , boyan <killme2008@gmail.com>
*/
package com.taobao.metamorphosis.tools.utils;
import java.io.IOException;
import java.util.Date;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.commons.lang.StringUtils;
/**
*
* @author ��
* @since 2011-9-29 ����9:56:05
*/
public class ConnectionUtil {
public static MonitorResult getConnectedCount(String ip, final String toString, String user, String password) {
SSHSupport support = SSHSupport.newInstance(user, password, ip);
String result = support.execute("netstat -nat|grep " + toString + "|awk '{print $5}'");
final AtomicInteger count = new AtomicInteger(0);
try {
com.taobao.metamorphosis.utils.Utils.processEachLine(result,
new com.taobao.metamorphosis.utils.Utils.Action() {
@Override
public void process(String line) {
if (StringUtils.isNotBlank(line) && line.contains(toString)) {
count.incrementAndGet();
}
}
});
}
catch (IOException e) {
throw new RuntimeException(e);
}
MonitorResult monitorResult = new MonitorResult();
monitorResult.setDescribe("");
monitorResult.setKey(ConsoleConstant.DUMMY);
monitorResult.setIp(ip);
monitorResult.setTime(new Date());
monitorResult.setValue(count.doubleValue());
return monitorResult;
}
public static boolean IsConnected(String ip, final String toString, String user, String password) {
return getConnectedCount(ip, toString, user, password).getValue().intValue() > 0;
}
/**
* <pre>
* ����ͳ�����ӵ�ָ���˿ڵĿͻ���ip������
* @param ip
* @param port
* @param user
* @param password
* @return
* 3 10.232.101.45
* 2 10.13.44.24
* 1 10.32.100.151
* 1 10.32.100.133
* 1 10.32.100.131
* 1 10.232.37.54
* </pre>
*/
public static String getConnectionInfo(String ip, int port, String user, String password) {
SSHSupport support = SSHSupport.newInstance(user, password, ip);
return support.execute(ConsoleConstant.getConnOfPortCMD(port));
}
public static void main(String[] args) {
System.out.println(IsConnected("10.232.102.184", "10.232.102.188:2181", "wuhua", "Wuhua_123"));
System.out.println(IsConnected("10.232.102.184", "2181", "wuhua", "Wuhua_123"));
System.out.println(IsConnected("10.232.102.184", "10.232.102.189:2181", "wuhua", "Wuhua_123"));
System.out.println(new AtomicInteger(0).doubleValue() > 0);
}
}