App.java 4.44 KB
package org.emercit.ethmanager;


import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Vector;

import net.sourceforge.argparse4j.ArgumentParsers;
import net.sourceforge.argparse4j.impl.Arguments;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.ArgumentParserException;
import net.sourceforge.argparse4j.inf.Namespace;  

import org.apache.log4j.Logger;
import org.apache.log4j.ConsoleAppender; 
import org.apache.log4j.Level;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
import org.emercit.ethmanager.service.EthLinux;



public class App 
{
	
	private static final Logger log = Logger.getLogger(App.class);
	    
	private static EthLinux ethlinux=new EthLinux();
	
    public static void main( String[] args )
    {
    	ArgumentParser parser = ArgumentParsers.newArgumentParser("prog");
    	
    	String eth; 	  //Название интерфейса
  	   	String param;  //Параметр который нужно изменить	  
  	   	String method; // Метод 
  	   	String value; // Значение параметра
  	   	String name; // Название интерфейса

       try {
	     
	 	 	parser.description("Конфигуратор сетевых интерфейсов")
			 .version("Version:1.0.0.0")
			 .defaultHelp(true);

	 	 	parser.addArgument("-m")
	   		 .type(String.class)
	   		 .setDefault("get")
	   		 .help("Методы: \n"
	   		 		+ "1) get - получение параметра;\n"
	   		 		+ "2) set - установка параметра;\n"
	   		 		+ "3) reset-сброс сетевых настроек на интерфейсах;\n"
	   		 		+ "4) eths- список сетевых интерфейсов.\n");
	    	
	    	parser.addArgument("-v")
	   		 .type(String.class)
	   		 .setDefault("")
	   		 .help("Значение параметра");
	   
	   		parser.addArgument("-p")
	   		.type(String.class)
	   		.setDefault("")
	   		.help("Имя параметра.\n Возможные параметры:\n"
	   				+"1) dhcp - может принимать значение true или false;\n"
	   				+"2) ip - адресс;\n"
	   				+"3) netmask - маска сети;\n"
	   				+"4) gateway - основной шлюз.\n");

	   		parser.addArgument("-e")
	   		.type(String.class)
	   		.setDefault("")
	   		.help("Название сетевого интерфейса");
	   		
	   		parser.addArgument("-log")
	   		.type(Integer.class)
	   		.setDefault(0)
	   		.help("Логирование. 0-выкл.; 1-консоль; 2-файл");
	   	
	    	 Logger rootLogger = Logger.getRootLogger();
	    	 PatternLayout layout = new PatternLayout("%d{ISO8601} [%t] %-5p %c %x - %m%n");
	    	 
	    	 //rootLogger.setLevel(Level.OFF);
	    	 rootLogger.setLevel(Level.DEBUG);
	    	
		     rootLogger.addAppender(new ConsoleAppender(layout));
		    try {
		    		RollingFileAppender fileAppender = new RollingFileAppender(layout, "/var/log/devtools/EthManager.log");
		    		rootLogger.addAppender(fileAppender);
		    } catch (IOException e) {
		    	log.error(e.getMessage());
		    }
	  
		    Namespace res = parser.parseArgs(args);
      
		   // param=res.getString("p");
		     method=res.getString("m");
	  
		    if (method.equals("set")) { //Конфигурация интерфейса
		    	
		    	name=res.getString("e");
		     	param= res.getString("p");
		 		value=res.getString("v");
		    		
		    	ethlinux.ApplyConfig(name, param,(Object)value );
		    	
		    }else if (method.equals("get")) { //Вывод информации из файла
		    	
		    	name=res.getString("e");
		    	
		    	ethlinux.PrintInfoByName(name);
		    }else if (method.equals("reset")) { // Сброс сетевых настроек
		    	ethlinux.setDefaults();
		    }else if (method.equals("eths")) { 
		    	Vector<String> v=ethlinux.getListEth();
		    	for (String s:v) {
		    		System.out.println(s);
		    	}
		    	
		    }

       }catch(Exception e){

    	   if(e instanceof ArgumentParserException){
    		   log.error(e.getMessage());
		}
		else {
 		 parser.handleError((ArgumentParserException) e);
 		 log.error(e.getMessage());
 		System.exit(1);
}
}

    }
}