linuxShortcuts/Services/fixDNS.sh
Bruno Fontes 6c66d88068 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.
2019-06-14 02:35:57 -03:00

38 lines
1.4 KiB
Bash
Executable File

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"