CrontabColl.java 3.19 KB
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);
	}
}