raspiblitz/home.admin/config.scripts/internet.wifi.sh

141 lines
4.5 KiB
Bash
Raw Normal View History

2020-07-23 13:23:41 +02:00
#!/bin/bash
# command info
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
echo "# handle the wifi"
echo "# internet.wifi.sh status"
echo "# internet.wifi.sh on SSID PASSWORD"
echo "# internet.wifi.sh off"
echo "# internet.wifi.sh backup-restore"
2020-07-23 13:23:41 +02:00
exit 1
fi
wifiIsSet=$(sudo cat /etc/wpa_supplicant/wpa_supplicant.conf 2>/dev/null| grep -c "network=")
wifiLocalIP=$(ip addr | grep 'state UP' -A2 | grep -E -v 'docker0|veth' | grep -E -i '([wlan][0-9]$)' | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
2020-07-23 13:23:41 +02:00
connected=0
if [ ${#wifiLocalIP} -gt 0 ]; then
connected=1
fi
if [ "$1" == "status" ]; then
echo "activated=${wifiIsSet}"
2020-07-23 13:24:41 +02:00
echo "connected=${connected}"
2020-07-23 13:23:41 +02:00
echo "localip='${wifiLocalIP}'"
exit 0
2020-07-23 13:24:41 +02:00
elif [ "$1" == "on" ]; then
2020-07-23 13:23:41 +02:00
ssid="$2"
password="$3"
if [ ${#ssid} -eq 0 ]; then
echo "err='no ssid given'"
2020-07-23 13:25:28 +02:00
exit 1
2020-07-23 13:23:41 +02:00
fi
if [ ${#password} -eq 0 ]; then
echo "err='no password given'"
2020-07-23 13:25:28 +02:00
exit 1
2020-07-23 13:23:41 +02:00
fi
2020-07-23 13:30:49 +02:00
wifiConfig="country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
2020-07-23 14:28:33 +02:00
ssid=\"${ssid}\"
2020-07-23 13:31:45 +02:00
scan_ssid=1
2020-07-23 14:28:33 +02:00
psk=\"${password}\"
2020-07-23 13:30:49 +02:00
key_mgmt=WPA-PSK
}"
2020-07-23 13:23:41 +02:00
echo "${wifiConfig}" > "/home/admin/wpa_supplicant.conf"
2020-07-23 13:27:13 +02:00
sudo chown root:root /home/admin/wpa_supplicant.conf
sudo mv /home/admin/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf
sudo chmod 755 /etc/wpa_supplicant/wpa_supplicant.conf
2020-07-23 13:23:41 +02:00
# activate new wifi settings
sudo wpa_cli -i wlan0 reconfigure 1>/dev/null
echo "# OK - changes should be actrive now - maybe reboot needed"
2020-07-23 13:23:41 +02:00
exit 0
2020-07-23 13:35:20 +02:00
elif [ "$1" == "off" ]; then
2020-07-23 13:23:41 +02:00
2020-07-23 13:31:45 +02:00
wifiConfig="country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1"
2020-07-23 13:23:41 +02:00
echo "${wifiConfig}" > "/home/admin/wpa_supplicant.conf"
2020-07-23 13:27:13 +02:00
sudo chown root:root /home/admin/wpa_supplicant.conf
2020-07-23 13:23:41 +02:00
sudo mv /home/admin/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf
sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
sudo rm /boot/wpa_supplicant.conf 2>/dev/null
sudo rm /mnt/hdd/app-data/wpa_supplicant.conf 2>/dev/null
2020-07-23 13:23:41 +02:00
# activate new wifi settings
sudo wpa_cli -i wlan0 reconfigure 1>/dev/null
echo "# OK - changes should be actrive now - maybe reboot needed"
2020-07-23 13:23:41 +02:00
exit 0
# https://github.com/rootzoll/raspiblitz/issues/560
# when calling this it will backup wpa_supplicant.conf to HDD (if WIFI is active)
# or when WIFI is inactive but a wpa_supplicant.conf exists restore this
elif [ "$1" == "backup-restore" ]; then
2021-05-03 23:40:18 +02:00
# print wifi state
echo "wifiIsSet=${wifiIsSet}"
# check if HDD backup location is available (for backup or restore)
hddBackupLocationAvailable=0
if [ -d /mnt/hdd/app-data ]; then
hddBackupLocationAvailable=1
fi
echo "hddBackupLocationAvailable=${hddBackupLocationAvailable}"
hddRestoreConfigAvailable=$(sudo ls /mnt/hdd/app-data/wpa_supplicant.conf 2>/dev/null | grep -c "wpa_supplicant.conf")
echo "hddRestoreConfigAvailable=${hddRestoreConfigAvailable}"
# check if mem copy of wifi config is available (for restore only)
# this should be available if a backup on HDD exists and HDD is not mounted yet but was inspected by datadrive script
memRestoreConfigAvailable=$(sudo ls /var/cache/raspiblitz/wpa_supplicant.conf 2>/dev/null | grep -c "wpa_supplicant.conf")
echo "memRestoreConfigAvailable=${memRestoreConfigAvailable}"
if [ ${wifiIsSet} -eq 1 ]; then
# BACKUP latest wifi settings to HDD if available
if [ ${hddBackupLocationAvailable} -eq 1 ]; then
sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /mnt/hdd/app-data/wpa_supplicant.conf
echo "wifiRestore=0"
echo "wifiBackup=1"
else
echo "wifiRestore=0"
echo "wifiBackup=0"
fi
exit 0
elif [ ${hddRestoreConfigAvailable} -eq 1 ]; then
# RESTORE backuped wifi settings from HDD to RaspiBlitz
sudo cp /mnt/hdd/app-data/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf
echo "# restoring old wifi settings from HDD ... wait 4 secounds to connect"
sudo wpa_cli -i wlan0 reconfigure 1>/dev/null
sleep 4
echo "wifiRestore=1"
echo "wifiBackup=0"
exit 0
elif [ ${hddRestoreConfigAvailable} -eq 1 ]; then
# RESTORE backuped wifi settings from MEMCOPY to RaspiBlitz
sudo cp /var/cache/raspiblitz/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf
echo "# restoring old wifi settings from MEMCOPY ... wait 4 secounds to connect"
sudo wpa_cli -i wlan0 reconfigure 1>/dev/null
sleep 4
echo "wifiRestore=1"
echo "wifiBackup=0"
exit 0
else
# noting to backup or restore
echo "wifiRestore=0"
echo "wifiBackup=0"
exit 0
fi
2020-07-23 13:23:41 +02:00
else
echo "err='parameter not known - run with -help'"
fi