Adding script to check DNS on laptop

Laptop battery is not working, so when the clock is wrong, my DNS
server does not works (because of DNSSEC) and it makes the clock to not
be able to update properly.

So this script changes the DNS to Quad9 and forces update the clock time
before changing it back to my DNS server.
This commit is contained in:
Bruno F. Fontes 2019-06-14 02:35:57 -03:00
parent ab9a092193
commit 6c66d88068
2 changed files with 48 additions and 0 deletions

37
Services/fixDNS.sh Executable file
View File

@ -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"

11
Services/testDNS.service Normal file
View File

@ -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