blob: 1bcf6527688935c58cd6dad6828a10d1eba93407 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#!/bin/bash
# Check if the script is run as root
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
# Backup the original resolv.conf file only if a backup doesn't exist yet
if [[ ! -e /etc/resolv.conf.bak ]]; then
cp /etc/resolv.conf /etc/resolv.conf.bak
fi
# Function to print usage instructions
usage() {
echo "Usage: $0 {g|sh|ag|cf|403|bg|rd|el} [-c|--clear] [-s|--set]"
exit 1
}
# Verify the number of arguments provided
if [[ $# -lt 1 ]]; then
usage
fi
# Parse the arguments
if [[ $1 == "-s" || $1 == "--set" ]]; then
# Check if exactly two IP addresses are provided
if [[ $# -ne 3 ]]; then
usage
fi
# Set the nameservers based on provided IP addresses
nameservers=("nameserver $2" "nameserver $3")
elif [[ $1 == "-c" || $1 == "--clear" ]]; then
nameservers=()
else
# Define the nameservers to add based on input argument
case $1 in
g)
nameservers=("nameserver 8.8.8.8" "nameserver 8.8.4.4")
;;
sh)
nameservers=("nameserver 178.22.122.100" "nameserver 185.51.200.2")
;;
ag)
nameservers=("nameserver 176.103.130.130" "nameserver 176.103.130.131")
;;
cf)
nameservers=("nameserver 1.1.1.1" "nameserver 1.0.0.1")
;;
403)
nameservers=("nameserver 10.202.10.202" "nameserver 10.202.10.102")
;;
bg)
nameservers=("nameserver 185.55.226.26" "nameserver 185.55.225.25")
;;
rd)
nameservers=("nameserver 10.202.10.10" "nameserver 10.202.10.11")
;;
el)
nameservers=("nameserver 78.157.42.100" "nameserver 78.157.42.101")
;;
*)
echo "Invalid option: $1"
usage
;;
esac
fi
# Remove all existing nameservers and add new ones atomically
# This avoids potential issues with an empty or partial file
{
> /etc/resolv.conf.new
for ns in "${nameservers[@]}"; do
echo "$ns"
done
} > /etc/resolv.conf.new
# Safely move the new file to the actual resolv.conf location
mv -f /etc/resolv.conf.new /etc/resolv.conf || { echo "Failed to update resolv.conf"; exit 1; }
# Confirm the changes
echo "The resolv.conf file has been updated:"
cat /etc/resolv.conf
|