`
jsczxy2
  • 浏览: 1284766 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

java调用cmd命令 && 调用jar包内的properties文件

    博客分类:
  • java
阅读更多

1.java调用cmd命令:

Runtime.getRuntime().exec("taskkill /f /im firefox.exe");

2.使用了loadProp()方法调用jar包内的properties文件

使用java程序监控geneFTP服务器(使用windows计划任务执行jar包),代码如下:(工程目录结构见附件)

Task.java:

package com.monitor;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import com.ahcomic.framework.util.common.SendMail;
import com.ahcomic.framework.util.common.StringUtil;
import com.enterprisedt.net.ftp.FTPClient;
import com.enterprisedt.net.ftp.FTPConnectMode;
import com.enterprisedt.net.ftp.FTPTransferType;

public class Task {

	public static final String MAIL_SMTPSERVER = "mail.tora.to";

	public static final String MAIL_USER = "torachan@tora.to";

	public static final String MAIL_PASSWORD = "dimen29019853";

	public static final String MAIL_FROM = "torachan@tora.to";

	public static final String genehosts = loadProp("gene6.ftp.hosts");

	public static final String geneports = loadProp("gene6.ftp.ports");

	public static final String geneusers = loadProp("gene6.ftp.users");

	public static final String genepwds = loadProp("gene6.ftp.pwds");

	public static final String logPath = loadProp("gene6.log.path");

	public static final String txtPaths = loadProp("gene6.test.txt.paths");

	public static final String failcount = loadProp("schedule.fail.count");

	public static final String sendemails = loadProp("schedule.send.emails");
	
	private static final String taskkill = loadProp("schedule.taskkill.flag");

	private static Map<String, Integer> map1 = new HashMap<String, Integer>();
	
	private static Long now = System.currentTimeMillis();

	public static void main(String[] args) {
		System.out.println(taskkill);
		if("1".equals(taskkill)){
			try {
				Runtime.getRuntime().exec("taskkill /f /im java.exe");
				Thread.sleep(2000);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		 	genesConn();
		 	
		//System.out.println(loadProp("gene6.log.path"));
	}

	public static void genesConn() {
		System.out.println("[" + getdateFmt(System.currentTimeMillis())
				+ "] geneftp connection begin!");
		String[] hosts = genehosts.split(",");
		String[] ports = geneports.split(",");
		String[] users = geneusers.split(",");
		String[] pwds = genepwds.split(",");
		String[] txts = txtPaths.split(",");

		for (int i = 0; i < hosts.length; i++) {
			if (!StringUtil.isBlank(hosts[i])) {
				try {
					testGene6(hosts[i], ports[i], users[i], pwds[i], txts[i]);
				} catch (Exception e) {
					continue;
				} finally {
					Map<String, Integer> map = readLog();
					String host = hosts[i];
					String txt = txts[i];
					// check file
					if (map.containsKey(host)) {
						int count = map.get(host);
						File file = new File(getTrueTxt(txt));
						if (file.exists()) {
							file.delete();
							if(i==hosts.length-1){
								delFold(txts[i]);
							}
							map1.put(host, 0);
						} else {
							if (count < Integer.valueOf(failcount)) {
								map1.put(host, count + 1);
								System.out
										.println("["
												+ getdateFmt(System
														.currentTimeMillis())
												+ "]监控到" + host + "的geneftp第"
												+ Integer.valueOf(count + 1)
												+ "次出错!");
							} else {
								String[] emails = sendemails.split(",");
								for (String email : emails) {
									if (!StringUtil.isBlank(email)) {
										sendMail(email, "监控到" + host
												+ "的geneftp出错!", "["
												+ getdateFmt(System
														.currentTimeMillis())
												+ "]监控到" + host + "geneftp出错!");
										System.out.println("send email");
									}
								}
								map1.put(host, 0);
							}
						}
					}
				}
			}
		}
		int i = 0;
		for (Iterator it = map1.keySet().iterator(); it.hasNext();) {
			String key = it.next().toString();
			if (i == 0) {
				writeLog(key + ":" + map1.get(key), false);
				i++;
			} else {
				writeLog(key + ":" + map1.get(key), true);
			}
		}
		
		
	}

	private static void delFold(String txt){
		String a = txt.substring(0,txt.lastIndexOf("\\\\")+2);
		String b = txt.substring(txt.lastIndexOf("\\")-1);
		String trueTxt = a + now + b;
		File f = new File(trueTxt);
		if(f.getParentFile().exists()){
			f.getParentFile().delete();
		}
	}
	
	
	private static String getTrueTxt(String txt){
		String a = txt.substring(0,txt.lastIndexOf("\\\\")+2);
		String b = txt.substring(txt.lastIndexOf("\\")-1);
		String trueTxt = a + now + b;
		File f = new File(trueTxt);
		if(!f.getParentFile().exists()){
			f.getParentFile().mkdirs();
		}
		return trueTxt;
	}
	
	private static void testGene6(String host, String port, String user,
			String pwd, String txt) throws Exception {
		FTPClient ftp = null;
		ftp = new FTPClient();
		// connection gene6ftp and download test.txt
		ftp.setRemoteHost(host);
		ftp.setRemotePort(Integer.parseInt(port));
		ftp.connect();
		ftp.login(user, pwd);
		ftp.setConnectMode(FTPConnectMode.PASV);
		ftp.setType(FTPTransferType.ASCII);
		ftp.get(getTrueTxt(txt), "test.txt");
		Thread.sleep(5000);
	}

	static Map<String, Integer> readLog() {
		File f = new File(logPath);
		if (!f.exists()) {
			File fold = f.getParentFile();
			if (!fold.exists())
				fold.mkdirs();
			String[] ips = genehosts.split(",");
			for (String ip : ips) {
				writeLog(ip + ":0", true);
			}
		}
		Map<String, Integer> map = new HashMap<String, Integer>();
		InputStreamReader read;
		try {
			read = new InputStreamReader(new FileInputStream(f), "gbk");
			BufferedReader br = new BufferedReader(read);
			String data = null;
			while ((data = br.readLine()) != null) {
				if (!StringUtil.isBlank(data)) {
					String[] strs = data.split(":");
					map.put(strs[0], Integer.valueOf(strs[1]));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			return map;
		}

	}

	static String getDayFmt(long date) {
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
		return sf.format(date);
	}

	static String getdateFmt(long date) {
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sf.format(date);
	}

	public static boolean sendMail(String to, String subject, String body) {
		// TODO Auto-generated method stub
		SendMail sendMail = new SendMail();
		sendMail.setSmtpServer(MAIL_SMTPSERVER);
		sendMail.setPassword(MAIL_PASSWORD);
		sendMail.setUser(MAIL_USER);
		try {
			sendMail.send(to, MAIL_FROM, subject, body);
			return true;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}

	static void writeLog(String data, boolean flag) {
		OutputStreamWriter write = null;
		BufferedWriter wr = null;
		try {

			File f1 = new File(logPath);
			if (!f1.getParentFile().exists()) {
				f1.getParentFile().mkdirs();
			}
			write = new OutputStreamWriter(new FileOutputStream(f1, flag));// true表示往下继续写
			wr = new BufferedWriter(write);
			wr.append(data + "\r\n");
			wr.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				wr.close();
				write.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	static String loadProp(String prop) {
		//InputStreamReader read;
		// String data="";
		String str = "";

		InputStream is = Task.class.getClassLoader().getResourceAsStream(
				"ApplicationResources.properties");

		int i = 0;
		byte[] buff = new byte[1024];
		String text = "";
		try {
			while ((i = is.read(buff)) > 0) {
				text = text + new String(buff, 0, i);
			}
			is.close();
			String[] datas = text.split("\r\n");
			for (String data : datas) {
				if (!StringUtil.isBlank(data)) {
					if (data.indexOf(prop) != -1 && data.indexOf("#") == -1) {
						String[] strs = data.split("=");
						str = strs[1].trim();
					}
				}
			}
		} catch (IOException e1) {
			e1.printStackTrace();
		}finally{
			return str;
		}

		/*
		 * try { File f = new
		 * File(Task.class.getClassLoader().getResource("ApplicationResources.properties").getPath());
		 * read = new InputStreamReader(new FileInputStream(f), "utf-8");
		 * BufferedReader br = new BufferedReader(read); while ((data =
		 * br.readLine()) != null) { if(data.indexOf(prop)!=-1 &&
		 * data.indexOf("#")==-1){ String[] strs = data.split("="); str =
		 * strs[1].trim(); } } } catch (Exception e) { e.printStackTrace();
		 * }finally{ return str; }
		 */
	}

}

 

ApplicationResources.properties:

gene6.ftp.hosts = 122.227.X.X,122.227.X.X

gene6.ftp.ports = 2129,2129

gene6.ftp.users = test,test

gene6.ftp.pwds = dimen123123,dimen123123

gene6.log.path = D:\\kdex\\Monitor_gene_server\\logs\\gene6d.log

gene6.test.txt.paths = D:\\kdex\\Monitor_gene_server\\get\\dl57.txt,D:\\kdex\\Monitor_gene_server\\get\\dl58.txt

schedule.fail.count = 3

schedule.send.emails = XXX@163.com,EEE@gmail.com,FFF@gmail.com

schedule.taskkill.flag = 0

 

 

  • 大小: 10.9 KB
分享到:
评论

相关推荐

    cmd命令生成mybatis-generator-core-1.3.2.jar自动生成dao,mapper,model文件示例

    同时,你需要将MyBatis Generator的jar文件(mybatis-generator-core-1.3.2.jar)下载到本地,并将其路径添加到系统的PATH环境变量中,这样在CMD中可以直接调用。 2. **配置XML**:创建一个名为`generatorConfig....

    在C#中调用 java的函数(C#与java结合使用)的ikvm相关包

    b:建立一个JavaProject,自定义包、类、需要透露给外界的方法,然后、将这个JavaProject打包成jar文件。(eclipse和myeclipse都自带的,或者你可以显摆一下,用黑框框敲几个代码整)。 c:狸猫换太子:jar&gt;&gt;dll ...

    JAVA学习教程

    ### JAVA学习教程:Java打包与跨项目调用详解 ...本文详细介绍了如何在Eclipse环境下打包Java项目成jar文件以及如何在不同项目间调用jar包的方法。通过遵循上述步骤,开发者可以更高效地管理和部署自己的Java应用程序。

    基于SpringBoot的Elasticsearch客户端调用封装工具设计源码

    主要文件类型包括30个Java源文件、2个Properties文件、2个Markdown文档、1个gitignore文件、1个JAR文件、1个LICENSE文件、1个PDF文件、1个mvnw文件、1个cmd文件和1个XML文件。EsClientRHL是一个可基于springboot的...

    美团cmd打包工具 walle-cli-all.jar

    在实际使用中,Walle-CLI-all.jar是一个包含所有依赖的jar包,开发者只需通过命令行调用该工具,就能执行诸如构建、签名、上传等操作。这个工具支持Android与iOS项目,能够处理APK或IPA文件,并且可以配置不同的打包...

    ant简明教程;ant调用bat方法

    - 使用`jar`任务创建Java类库JAR文件。 - 使用`war`任务打包Java EE项目为WAR文件。 现在,我们关注如何在Ant中执行Bat文件。以下是一个例子: ```xml &lt;exec executable="cmd"&gt; &lt;!-- argpath属性传递给...

    基于Java语言的毕设代码后端设计源码

    本项目的后端源码包含了110个文件,这些文件分布在不同的目录和类型中,涵盖了Java源代码文件、XML配置文件、DLL库文件、JAR库文件、属性文件、数据文件、Maven构建文件、YAML配置文件以及图片文件等多种类型。...

    基于Java语言的宿舍系统后端设计源码

    JAR包文件的引入,说明该项目支持打包发布,是Java项目实现模块化和产品化的重要步骤。JAR文件不仅可以包含Java类文件和元数据,还可以包含声音、图片和其他资源文件,使得项目代码可以独立于开发环境运行。 ...

    基于Java平台的地质检测系统后端开发设计源码

    除了Java源文件和XML配置文件外,该压缩包还包括了诸如.gitattributes、.gitignore、properties、md、mvnw、cmd和yml等多种类型的文件。这些文件虽然不是直接的代码部分,但它们对于整个系统的开发、维护和运行同样...

    整合dobbo实现简单的RPC服务调用.zip

    10. **部署与运行**:项目最终需要打包为可执行的jar文件,并通过Java命令运行,或者在生产环境中,可以考虑使用Docker或其他容器化技术进行部署。 这个项目不仅涉及到SpringBoot的常规应用开发,还涵盖了Dubbo的...

    \.m2 wrapper 文件具体内容

    2. `maven-wrapper.jar`:这是执行Wrapper脚本时实际使用的JAR文件,它负责下载指定的Maven版本。 总的来说,`.m2\wrapper`目录和其中的文件对于Maven项目来说至关重要,因为它们确保了构建过程的一致性和可移植性...

    Maven Home Path配置Use Maven wrapper时的.mvn文件

    该文件夹还可能包含其他子文件夹和文件,例如用来存放下载的Maven二进制文件和Wrapper的.jar文件。 .mvn文件夹中可能包含如下文件和子文件夹: 1. mvnw(或mvnw.bat):这是一个跨平台的Maven包装器脚本,通过这个...

    Java会议室预约系统源码.zip

    `main`目录下又分为`java`和`resources`,其中`java`包含了项目的主要Java代码,按照包结构组织,如业务逻辑层(Service层)、数据访问层(DAO层)、模型(Model层)和控制器(Controller层)。`resources`则可能...

    基于Java语言的史上最简单Spring Cloud教程设计源码

    具体来说,3205个XML配置文件体现了传统配置方式的应用,Java源文件则涉及了后端逻辑的具体实现,properties文件和yml文件则分别承载了系统和微服务的配置信息,而jar文件的137个表明了项目依赖了许多外部库和框架。...

    swagger生成angular 6或csharp客户端

    - `gen.cmd` 和 `gen-cs.cmd` 可能是两个批处理命令文件,分别用于生成Angular和C#客户端的脚本。用户运行这些命令,就可以自动从Swagger文档生成相应的客户端代码。 - `swagger-codegen-cli-2.4.0.jar` 是Swagger ...

    corba jacorb 配置

    @JAVA_CMD@-classpath"@JACORB_HOME@\lib\idl.jar;@JACORB_HOME@\lib\logkit-1.2.jar;%CLASSPATH%"org.jacorb.idl.parser%* ``` - **修改后**: ```plaintext JAVA-classpath"%JACORB_HOME%\lib\idl.jar;%JACORB...

    day020-继承加强和设计模式代码和笔记.rar

    在cmd控制台中,切换路径到jar文件所在的目录。 输入 :java -jar jar包名.jar step2:剩下的就是按照 3.1中的步骤使用即可 4. Properties资源(配置)文件的解析(重点) -------------...

    MyBatis代码生成工具

    CMD文件是启动脚本,通常用于Windows环境,用户可以通过运行这个命令行脚本来启动代码生成的过程。generatorConfig.xml是配置文件,这是MyBatis Generator的核心,开发者可以在这个文件中配置数据库连接信息、表选择...

    dubbo-provider.7z

    在Dubbo项目中,`main/java`会包含服务接口和服务实现的Java类,而`main/resources`可能包含配置文件,如`dubbo.properties`或XML配置文件。 5. `.idea`:这是IntelliJ IDEA或其他基于IntelliJ的IDE的工作区文件,...

    Weblogic,tomcat调试eclipse配置

    4. **必要的JAR文件**: 包括`p6spy.jar`, `sqlprofiler.jar`, `log4j.jar`等。 #### 三、配置步骤 接下来详细介绍具体的配置步骤。 ##### 第一步:下载并安装SQL Profiler - 访问官方网站或第三方资源网站下载SQL ...

Global site tag (gtag.js) - Google Analytics