JAVA 修改win/linux 系統時間 JAVA 修改系統時間
阿新 • • 發佈:2018-12-11
原創 :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許可權限制。