diff --git a/Services/fixDNS.sh b/Services/fixDNS.sh new file mode 100755 index 0000000..51b2e7e --- /dev/null +++ b/Services/fixDNS.sh @@ -0,0 +1,37 @@ +function isDNSWorking() { + dnsWorking=$(dig brunofontes.net | grep "ANSWER: 0") +} +logfile="/var/log/bfontes" + +sudo echo "$(date +"%Y-%m-%d %H:%M:%S") - Checking if DNS is working" >> "$logfile" +isDNSWorking + +if [ "$dnsWorking" ]; then + sudo echo "$(date +"%Y-%m-%d %H:%M:%S") - DNS not working, hour may be wrong. Trying to fix..." >> "$logfile" + sudo chattr -i /etc/resolv.conf + sudo sed -i 's/127.0.0.2/9.9.9.9/' /etc/resolv.conf 2>>"$logfile" + sudo chattr +i /etc/resolv.conf + + sudo echo "$(date +"%Y-%m-%d %H:%M:%S") - Forcing time to sync" >> "$logfile" + sudo chronyc online 2>"$logfile" + sudo chronyc -a 'burst 4/4' + i=0 + while [ "$dnsWorking" -a $i -le 4 ]; do + sudo echo "$(date +"%Y-%m-%d %H:%M:%S") - Waiting..." >> "$logfile" + sleep 20 + isDNSWorking + i=$(( "$i" + 1 )) + done + + if [ -z "$dnsWorking" ]; then + sudo echo "$(date +"%Y-%m-%d %H:%M:%S") - FIXED!" >> "$logfile" + else + sudo echo "$(date +"%Y-%m-%d %H:%M:%S") - Script has failed..." >> "$logfile" + sudo echo "$(date +"%Y-%m-%d %H:%M:%S") - Fixing DNS script has failed. More details on $logfile" >> ~/.log_error + fi + sudo echo "$(date +"%Y-%m-%d %H:%M:%S") - Configuring DNS servers back." >> "$logfile" + sudo chattr -i /etc/resolv.conf + sudo sed -i 's/9.9.9.9/127.0.0.2/' /etc/resolv.conf + sudo chattr +i /etc/resolv.conf +fi +sudo echo "$(date +"%Y-%m-%d %H:%M:%S") - Done" >> "$logfile" diff --git a/Services/testDNS.service b/Services/testDNS.service new file mode 100644 index 0000000..9e1accf --- /dev/null +++ b/Services/testDNS.service @@ -0,0 +1,11 @@ +[Unit] +Description=Test and fix DNS update with wrong time +Wants=network-online.target +After=network-online.target + +[Service] +Type=oneshot +ExecStart = /bin/bash /home/bruno/Apps/linuxShortcuts/Services/fixDNS.sh + +[Install] +WantedBy=multi-user.target