1.创建ssh 连接
/**
* 获取服务器链接
* @param hostName 地址
* @param userName 用户名
* @param password 密码
* @param port 端口
* @return
*/
public static Connection getConnection(String hostName,String userName,String password,int port){
Connection connection = new Connection(hostName,port);
try {
//连接到主机
connection.connect();
//使用用户名和密码校验
boolean isconn = connection.authenticateWithPassword(userName,password);
if (!isconn){
logger.info("用户名或密码错误");
}
else {
logger.info("服务器连接成功");
return connection;
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
2.获取用户点击某个链接的IP个数
/**
* 获取用户点击某个链接的IP个数
* @param hostName ip地址
* @param userName 用户名
* @param password 用户密码
* @param port 端口
* @param matchingInfo 模糊搜索内容
* @param date 时间过滤
* @return
*/
public static Integer getUserClicks(String hostName,String userName,String password,int port,String matchingInfo,Date date){
Connection conn = getConnection(hostName, userName, password, port);
//Tomcat的日志文件名带有日期,因此可以设置一个日期时间 格式日期格式
SimpleDateFormat format = new SimpleDateFormat("dd/MMM/yyyy", Locale.ENGLISH);
String nowDate = format.format(date);
//日志存放的地址
// String cmd="cd /&&cat "+logFile+" |grep -a "+date+" |grep -a '"+url+"' | awk '{print $4}'";
//执行获取点击营销链接的请求ip,过滤重复ip
String cmd="cd /&&cat "+LINUX_NGINX_ACCESS_LOG+" |grep -a "+nowDate+" |grep -a '"+matchingInfo+"' | awk '{print $1}' | sort | uniq";
//哪个时间点有请求
Integer userNum = 0;
Session session=null;
try {
session = conn.openSession();
//执行shell命令
session.execCommand(cmd);
//处理获取的shell命令的输出信息
InputStream stdout = session.getStdout();
InputStreamReader inputStreamReader = new InputStreamReader(stdout);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
//获取用户点击营销链接的IP个数
String s = bufferedReader.readLine();
while (s!=null){
if (s!=null){
userNum=userNum+1;
}
s = bufferedReader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//最后关闭session资源
if (session != null){
session.close();
}
}
logger.info("获取用户点击某个链接的IP个数{}个",userNum);
return userNum;
}