4 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
6 [[ $EUID == 0 ]] ||
exec sudo
-E "${BASH_SOURCE[0]}" "$@"
8 # Usage: run when switching from an untrusted network like public wifi
11 if [[ -e /etc
/NetworkManager
/conf.d
/dns.conf
]]; then
12 rm -fv /etc
/NetworkManager
/conf.d
/dns.conf
13 if [[ $
(systemctl is-active NetworkManager
) == active
]]; then
14 m systemctl restart NetworkManager
18 rm -f /etc
/systemd
/resolved.conf.d
/untrusted-network.conf
20 dhclient_restart
=false
22 if ! grep -qP '\bdomain-name-servers\b' /etc
/dhcp
/dhclient.conf
; then
23 sed -i 's/^ *request/request domain-name-servers,/' /etc
/dhcp
/dhclient.conf
25 e
$0: dhclient_restart
=true
30 read -r _ _ _ _ gateway_if _
< <(ip route get
8.8.8.8)
31 if [[ $gateway_if ]]; then
32 # we could do this, but dhclient is still running and will use its old settings
33 # from dependencies of ifupdown,
34 # from man dhclient-script
35 # from /etc/dhcp/dhclient-enter-hooks.d/resolved
36 # rm -f /run/systemd/resolved.conf.d/*$gateway_if*
39 if $dhclient_restart && grep -Pq "^ *auto ($gateway_if|.* $gateway_if( |$))" /etc
/network
/interfaces
; then
44 # at least on systemd 237 ifupdown it sets a global and this is not needed
45 systemd-resolve
--interface=$gateway_if --revert
47 e
$0: no gateway_if found