47 lines
2.0 KiB
Markdown
47 lines
2.0 KiB
Markdown
|
|
# Dynamic Status
|
||
|
|
|
||
|
|
These scripts control and monitor several functions of my computer. Most importantly it is possible to switch to a "offline status" which disables several internet-using monitoring functions.
|
||
|
|
|
||
|
|
status-ip.sh and status-misc.sh rely on `xfce-genmon-plugin` to show some status messages on the XFCE task bars.
|
||
|
|
|
||
|
|
status-interaction.sh enables users to actively change some values, e.g. the on-/offline status, the used DNS nameserver, and to trigger some actions, e.g. to send mails in an `msmtp` queue.
|
||
|
|
|
||
|
|
I tried to make it as compatible to as many systems as possible but some values are still hard-coded.
|
||
|
|
|
||
|
|
## DNS nameserver switch
|
||
|
|
|
||
|
|
This feature heavily depends on network-manager and it's dispatcher feature. In order to use it, put a file in `/etc/NetworkManager/dispatcher.d/` and name it `90-custom-resolv.conf` for example. Fill it:
|
||
|
|
|
||
|
|
```
|
||
|
|
#!/bin/bash
|
||
|
|
#
|
||
|
|
# Depending on dynamic status, override /etc/resolv.conf
|
||
|
|
|
||
|
|
CUSTOM=/tmp/resolv_custom.conf
|
||
|
|
DEFAULT=/home/user/bin/default-nameserver.sh
|
||
|
|
|
||
|
|
if [ ! -e $CUSTOM ]; then # if file does not exists, use default nameserver script
|
||
|
|
bash $DEFAULT
|
||
|
|
echo "# 90-custom-resolvconf executed default-nameserver.sh" >> /etc/resolv.conf
|
||
|
|
exit 0
|
||
|
|
fi
|
||
|
|
|
||
|
|
SET=$(cat $CUSTOM | head -n1 | awk '{print $NF}') # first line, last word
|
||
|
|
|
||
|
|
if [ "$SET" != "auto" ]; then
|
||
|
|
cp -f /etc/resolv.conf /etc/resolv.conf.bak # backup original resolv config file
|
||
|
|
cat $CUSTOM > /etc/resolv.conf # use custom file, update original one
|
||
|
|
else
|
||
|
|
echo "# 90-custom-resolvconf didn't change any substantial values here, just added this line." >> /etc/resolv.conf
|
||
|
|
fi
|
||
|
|
|
||
|
|
```
|
||
|
|
|
||
|
|
The file has to be owned by root and be executable in order to function. It will either execute a script that sets default nameserver settings (in my case, it's localhost since I use a local dnsmasq), or take the values from another file which is created by switching the nameservers with status-interaction.sh.
|
||
|
|
|
||
|
|
Nameservers can be configured in `config.cfg` as value of `NS=`. It holds following pattern:
|
||
|
|
|
||
|
|
`set1(ip1,ip2,ip3)|set2(ip4,ip5)`
|
||
|
|
|
||
|
|
Please remember to put it between quotes.
|