ShellExecutorThread.java
3.66 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package com.sitech.ismp.check.mbean;
import com.sitech.base.AgentProperties;
import com.sitech.ismp.check.util.RemoteControllerFactory;
import com.sitech.ismp.coll.busi.BusiConstants;
import com.sitech.ismp.messageObject.cc.CommandParameters;
import com.sitech.ismp.messageObject.cc.CommandResults;
import com.sitech.util.FileUtils;
import com.sitech.util.RandomGUID;
import com.sitech.util.upload.FTPIF;
import com.sitech.util.upload.FTPSrv;
import com.sitech.util.upload.RomoteController;
import com.sitech.util.upload.SFTPClient;
import org.apache.log4j.Logger;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Date;
import java.util.HashMap;
/**
* Created with IntelliJ IDEA.
* User: Linxc
* Date: 14-3-12
* Time: 下午1:16
* To change this template use File | Settings | File Templates.
*/
public class ShellExecutorThread {
private Logger logger = Logger.getLogger(CommandExecutor.class);
private String _taskid;
private int _type;
private String _content;
private String _hostip;
private String _hostusername;
private String _hostpassword;
private String _hostloginmode;
private HashMap _customProp;
private String guid;
private String shellName;
private void init(CommandParameters cps){
_taskid = cps.getTASK_ID();
_type = cps.getTYPE();
_content = cps.getCONTENT();
_hostip = cps.getHOST_IP();
_hostusername = cps.getHOST_USERNAME();
_hostpassword = cps.getHOST_PASSWORD();
_hostloginmode = cps.getHOST_LOGIN_MODE();
_customProp = cps.getCUSTOMPROP();
guid = "CCCP_" + RandomGUID.getRandomGUID();
shellName = guid + ".sh";
}
public CommandResults doCommandLocal(CommandParameters req) {
logger.info("doCommandLocal...");
init(req);
writeScriptFile();
ShellExecutorUtil.cache.put(guid, req);
writeNoticeFile();
return null;
}
private boolean writeScriptFile() {
return FileUtils.writeFile(SCRIPT_FILE_DIR, shellName, _content, false);
}
private void writeNoticeFile() {
String noticeContent = getNoticeContent();
String fileName = "notice_" + guid + ".sh";
logger.info("Create NoticeFile: " + fileName);
FileUtils.writeFile(TMP_NOTICE_DIR, fileName, noticeContent, false);
String noticeDir = AgentProperties.AGENT_HOME + "/notice/" + System.getProperty("user.name") + "/";
FileUtils.createNewFile(noticeDir, fileName);
}
/**
* 生成notice文件,通知crontab执行脚本
*/
private String getNoticeContent() {
String content = BusiConstants.NOTICE_CONTENT;
content = content.replaceAll("#AGENT_HOME#", AgentProperties.AGENT_HOME);
content = content.replaceAll("#AGENT_ID#", AgentProperties.AGENT_ID);
content = content.replaceAll("#REQUEST_ID#", guid);
content = content.replaceAll("#SCHEDULE_ID#", _taskid);
//1.脚本测试 2.调度任务同步 3.脚本下发 4.附件下发 5.附件验证
content = content.replaceAll("#OPERATE_TYPE#", OPR_TYPE_SHELL);
content = content.replaceAll("#TRRIGGER_TYPE#", "AUTO");
content = content.replaceAll("#SEQ#", SEQ_1_NOTICE);
content = content.replaceAll("#SHELL_NAME#", shellName);
return content;
}
public static final String SEQ_1_NOTICE = "1";
public static final String OPR_TYPE_SHELL = "6";
public static final String TMP_NOTICE_DIR = AgentProperties.AGENT_HOME + "/script/busi/busi_tmp/";
public static final String SCRIPT_FILE_DIR = AgentProperties.AGENT_HOME + "/script/busi/";
}