CrontabColl.java
3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package com.sitech.ismp.coll.busi;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
import org.apache.log4j.Logger;
import org.jcrontab.Crontab;
import com.sitech.base.AgentProperties;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.ismp.coll.busi.util.FilesOperation;
import com.sitech.util.DES3;
import com.sitech.util.JSONUtil;
import com.sitech.util.ThreadPoolUtil;
/**
* FTP采集Crontab配置到本地 需要/var/spool/cron或/var/spool/cron/crontabs目录读权限
*
* @author LINXC
*/
public class CrontabColl implements CrontabCollMBean {
private static Logger logger = Logger.getLogger(FileFtpColl.class);
private static Crontab cron = Crontab.getInstance();
static {
try {
// 创建Jcrontab配置目录和文件
String gxCfgDirStr = AgentProperties.AGENT_HOME + "/config/gx";
File gxCfgDir = new File(gxCfgDirStr);
if (!gxCfgDir.exists()) {
gxCfgDir.mkdir();
}
String crontabFileStr = AgentProperties.AGENT_HOME + "/config/gx/crontab";
File crontabFile = new File(crontabFileStr);
if(!crontabFile.exists()){
crontabFile.createNewFile();
}
String jcrontabPropFile = AgentProperties.AGENT_HOME + "/config/gx/jcrontab.properties";
String jcrontabPropContext = "";
jcrontabPropContext += "org.jcrontab.data.file=" + crontabFile + "\n";
jcrontabPropContext += "org.jcrontab.data.datasource=org.jcrontab.data.FileSource\n";
jcrontabPropContext += "org.jcrontab.Crontab.refreshFrequency=3\n";
jcrontabPropContext += "org.jcrontab.log.Logger=org.jcrontab.log.Log4JLogger\n";
jcrontabPropContext += "org.jcrontab.log.log4J.Properties=" + AgentProperties.AGENT_HOME + "/config/log4j.properties\n";
FilesOperation.createFiles(jcrontabPropFile, jcrontabPropContext);
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
logger.info("Shutting down...");
cron.uninit(200);
logger.info("Stoped Jcrontab!");
}
});
// 启动Jcrontab
cron.setDaemon(false);
cron.init(jcrontabPropFile);
logger.info("Start Jcrontab...");
} catch (java.lang.Exception e) {
e.printStackTrace();
}
}
public Vector<TblATO_KPIDETAIL> collCrontab(HashMap<String, String> params) {
try {
ThreadPoolUtil.executorService
.execute(new CrontabCollThread(params));
} catch (Exception e) {
logger.error("Exception while do CrontabColl.collCrontab() ", e);
}
return new Vector<TblATO_KPIDETAIL>();
}
public static void main(String[] args) {
CrontabColl collector = new CrontabColl();
Map<String,String> jsonMap = new HashMap<String, String>();
jsonMap.put("crontabTime", "8 17 * * *");
jsonMap.put("crontabLog", "/bnms/ismp/masteragent/logs/coll.log");
jsonMap.put("crontabCmd", "ksh /iBNMSConsole/wfstation77/workcrontab/shell/AutoAlarmNotice.sh");
jsonMap.put("crontabUser", "ibnms");
jsonMap.put("hostIp", "10.182.15.77");
String json = JSONUtil.toJSON(jsonMap);
HashMap<String, String> params = new HashMap<String, String>();
params.put("IP_ADDR", "10.182.15.77");
params.put("USERNAME", "ibnms");
params.put("PASSWORD", DES3.encrypt("?ismp#*2"));
params.put("CRON_GUID", json);
collector.collCrontab(params);
}
}