소스 검색

Improve the tlsdate sanity script

Bob Mottram 10 년 전
부모
커밋
6b301b4825
1개의 변경된 파일60개의 추가작업 그리고 6개의 파일을 삭제
  1. 60
    6
      beaglebone.txt

+ 60
- 6
beaglebone.txt 파일 보기

@@ -1013,26 +1013,80 @@ If you get errors during the /configure/ stage then you may need to reboot so th
1013 1013
 editor /usr/bin/updatedate
1014 1014
 #+END_SRC
1015 1015
 
1016
-Add the following:
1016
+Add the following, changing /username@mydomainname.com/ to your email address:
1017 1017
 
1018 1018
 #+BEGIN_SRC: bash
1019 1019
 #!/bin/bash
1020 1020
 
1021 1021
 TIMESOURCE=google.com
1022
+TIMESOURCE2=www.ptb.de
1022 1023
 LOGFILE=/var/log/tlsdate.log
1024
+TIMEOUT=5
1025
+EMAIL=username@mydomainname.com
1026
+
1027
+# File which contains the previous date as a number
1028
+BEFORE_DATE_FILE=/var/log/tlsdateprevious.txt
1029
+
1030
+# File which contains the previous date as a string
1031
+BEFORE_FULLDATE_FILE=/var/log/tlsdate.txt
1032
+
1023 1033
 DATE_BEFORE=$(date)
1024
-YEAR_BEFORE=$(echo $DATE_BEFORE | awk -F ' ' '{print $6}')
1025
-/usr/bin/timeout 3 tlsdate -l -t -H $TIMESOURCE -p 443
1034
+BEFORE=$(date -d "$Y-$M-$D" '+%s')
1035
+
1036
+# If the date was previously set
1037
+if [[ -f "$BEFORE_DATE_FILE" ]]; then
1038
+    BEFORE_FILE=$(cat $BEFORE_DATE_FILE)
1039
+    BEFORE_FULLDATE=$(cat $BEFORE_FULLDATE_FILE)
1040
+
1041
+	# is the date going backwards?
1042
+    if (( BEFORE_FILE > BEFORE )); then
1043
+        echo -n "Date went backwards between tlsdate updates. " \
1044
+			>> $LOGFILE
1045
+		echo -n "$BEFORE_FILE > $BEFORE, " >> $LOGFILE
1046
+		echo "$BEFORE_FULLDATE > $DATE_BEFORE" >> $LOGFILE
1047
+
1048
+		# Send a warning email
1049
+		echo $(tail $LOGFILE -n 2) | mail -s "tlsdate anomaly" $EMAIL
1050
+
1051
+		# Try another time source
1052
+		TIMESOURCE=$TIMESOURCE2
1053
+    fi
1054
+fi
1055
+
1056
+# Set the date
1057
+/usr/bin/timeout $TIMEOUT tlsdate -l -t -H $TIMESOURCE -p 443 >> $LOGFILE
1058
+
1026 1059
 DATE_AFTER=$(date)
1027
-YEAR_AFTER=$(echo $DATE_AFTER | awk -F ' ' '{print $6}')
1028
-if [ "$YEAR_AFTER" -lt "$YEAR_BEFORE" ]; then
1060
+AFTER=$(date -d "$Y-$M-$D" '+%s')
1061
+
1062
+# After setting the date did it go backwards?
1063
+if (( AFTER < BEFORE )); then
1029 1064
 	echo "Incorrect date: $DATE_BEFORE -> $DATE_AFTER" >> $LOGFILE
1030
-	date -s "DATE_BEFORE"
1065
+
1066
+	# Send a warning email
1067
+	echo $(tail $LOGFILE -n 2) | mail -s "tlsdate anomaly" $EMAIL
1068
+
1069
+	# Try resetting the date from another time source
1070
+	/usr/bin/timeout $TIMEOUT tlsdate -l -t -H $TIMESOURCE2 -p 443 >> $LOGFILE
1071
+    DATE_AFTER=$(date)
1072
+    AFTER=$(date -d "$Y-$M-$D" '+%s')
1031 1073
 else
1032 1074
 	echo -n $TIMESOURCE >> $LOGFILE
1075
+	if [[ -f "$BEFORE_DATE_FILE" ]]; then
1076
+		echo -n " " >> $LOGFILE
1077
+		echo -n $BEFORE_FILE >> $LOGFILE
1078
+	fi
1079
+	echo -n " " >> $LOGFILE
1080
+	echo -n $BEFORE >> $LOGFILE
1081
+	echo -n " " >> $LOGFILE
1082
+	echo -n $AFTER >> $LOGFILE
1033 1083
 	echo -n " " >> $LOGFILE
1034 1084
 	echo $DATE_AFTER >> $LOGFILE
1035 1085
 fi
1086
+
1087
+# Log the last date
1088
+echo "$AFTER" > $BEFORE_DATE_FILE
1089
+echo "$DATE_AFTER" > $BEFORE_FULLDATE_FILE
1036 1090
 #+END_SRC
1037 1091
 
1038 1092
 Save and exit.