1. 程式人生 > >JAVA 修改win/linux 系統時間 JAVA 修改系統時間

JAVA 修改win/linux 系統時間 JAVA 修改系統時間

原創 :https://blog.csdn.net/qq2531246791/article/details/84898221

轉載請標明出處 https://blog.csdn.net/qq2531246791/article/details/84898221

 

import java.io.IOException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
 * 作者 : LZ
 * time : 2017/6/8
 */
public class SynSystemDateUtils {

    public static void main(String[] args) {
        String date = "2017-11-11";
        String time = "11:11:11"  ;
        updateSysDateTime(date,time);
    }

    /**
     * 修改系統時間
     * yyyy-MM-dd HH:mm:ss
     * @param DataStr_   2017-11-11   yyyy-MM-dd
     * @param TimeStr_   11:11:11     HH:mm:ss
     */
    public static void updateSysDateTime(String dataStr_,String timeStr_){
        try {
            String osName = System.getProperty("os.name");
            // Window 系統
            if (osName.matches("^(?i)Windows.*$")) {
                String cmd;
                // 格式:yyyy-MM-dd
                cmd = " cmd /c date " + dataStr_;
                Runtime.getRuntime().exec(cmd);
                // 格式 HH:mm:ss
                cmd = " cmd /c time " + timeStr_;
                Runtime.getRuntime().exec(cmd);
                System.out.println("windows 時間修改");
            } else if (osName.matches("^(?i)Linux.*$")) {
                // Linux 系統 格式:yyyy-MM-dd HH:mm:ss   date -s "2017-11-11 11:11:11"
                FileWriter excutefw = new FileWriter("/usr/updateSysTime.sh");
                BufferedWriter excutebw=new BufferedWriter(excutefw);
                excutebw.write("date -s \"" + dataStr_ +" "+ timeStr_ +"\"\r\n");
                excutebw.close();
                excutefw.close();
                String cmd_date ="sh /usr/updateSysTime.sh";
                Runtime.getRuntime().exec(cmd_date);
                System.out.println("cmd :" + cmd_date + " date :" + dataStr_ +" time :" + timeStr_);
                System.out.println("linux 時間修改");
            } else {
                System.out.println("作業系統無法識別");
            }
        } catch (IOException e) {
            e.getMessage();
        }
    }

}

 

linux系統需設定:

root使用者執行chmod 4755 /bin/date

備註:也就是給date命令增加s許可權位即設定setuid(4000),這樣普通使用者就可以執行date命令了,缺點也是很明顯的,相當於去掉了date命令的root許可權限制。