commit 765c50f2fc682bddc0296bcb8ef327e5803ef4b4 Author: Bruno21 Date: Sat Apr 6 08:52:36 2024 +0200 1st commit diff --git a/lan.list b/lan.list new file mode 100644 index 0000000..e97fc8d --- /dev/null +++ b/lan.list @@ -0,0 +1,41 @@ +192.168.2.1 asus.photos-nas.ovh asus +192.168.2.1 www.asusrouter.com et12 +192.168.2.57 airdrop.photos-nas.ovh airdrop +192.168.2.57 books.photos-nas.ovh books +192.168.2.57 change.photos-nas.ovh changedetection +192.168.2.57 chibisafe.photos-nas.ovh chibisafe +192.168.2.57 dockge.photos-nas.ovh dockge +192.168.2.57 docspell.photos-nas.ovh docspell +192.168.2.57 dozzle.photos-nas.ovh dozzle +192.168.2.57 ds923.photos-nas.ovh dsm +192.168.2.57 glances.photos-nas.ovh glances +192.168.2.57 gokapi.photos-nas.ovh gokapi +192.168.2.57 gotify.photos-nas.ovh gotify +192.168.2.57 igotify.photos-nas.ovh gotify-api +192.168.2.57 invidious.photos-nas.ovh invidious +192.168.2.57 maloja.photos-nas.ovh maloja +192.168.2.57 maps-server.photos-nas.ovh maps-server +192.168.2.57 maps.photos-nas.ovh maps +192.168.2.57 menu.photos-nas.ovh heimdall +192.168.2.57 navidrome.photos-nas.ovh navidrome +192.168.2.57 nextcloud.photos-nas.ovh nextcloud +192.168.2.57 notif.photos-nas.ovh nfty +192.168.2.57 paperlessngx.photos-nas.ovh paperlessngx +192.168.2.57 pastebin.photos-nas.ovh pastebin +192.168.2.57 pastefy.photos-nas.ovh pastefy +192.168.2.57 photos.photos-nas.ovh photos +192.168.2.57 pingvin.photos-nas.ovh pingvin +192.168.2.57 psitransfer.photos-nas.ovh psitransfer +192.168.2.57 seafile.photos-nas.ovh seafile +192.168.2.57 search.photos-nas.ovh searxng +192.168.2.57 send.photos-nas.ovh send +192.168.2.57 snippet.photos-nas.ovh snippet +192.168.2.57 syno-dashboard.photos-nas.ovh syno-dashboard +192.168.2.57 tautulli.photos-nas.ovh tautulli +192.168.2.57 test.photos-nas.ovh test +192.168.2.57 tube.photos-nas.ovh tube +192.168.2.57 uptime.photos-nas.ovh uptime-kuma +192.168.2.57 vault.photos-nas.ovh vaultwarten +192.168.2.57 yacy.photos-nas.ovh yacy +192.168.2.116 pihole1.photos-nas.ovh dietpi1 +192.168.2.216 pihole2.photos-nas.ovh dietpi2 diff --git a/lan_1.list b/lan_1.list new file mode 100644 index 0000000..8885e8f --- /dev/null +++ b/lan_1.list @@ -0,0 +1,23 @@ +192.168.2.57 navidrome.photos-nas.ovh navidrome +192.168.2.57 ds923.photos-nas.ovh dsm +192.168.2.57 maloja.photos-nas.ovh maloja +192.168.2.57 photos.photos-nas.ovh photos +192.168.2.57 change.photos-nas.ovh changedetection +192.168.2.57 search.photos-nas.ovh searxng +192.168.2.57 vault.photos-nas.ovh vaultwarten +192.168.2.57 menu.photos-nas.ovh heimdall +192.168.2.57 notif.photos-nas.ovh nfty +192.168.2.57 uptime.photos-nas.ovh uptime-kuma +192.168.2.57 dozzle.photos-nas.ovh dozzle +192.168.2.57 gotify.photos-nas.ovh gotify +192.168.2.57 igotify.photos-nas.ovh gotify-api +192.168.2.57 tautulli.photos-nas.ovh tautulli +192.168.2.57 glances.photos-nas.ovh glances +192.168.2.57 test.photos-nas.ovh test +192.168.2.57 paperlessngx.photos-nas.ovh paperlessngx +192.168.2.57 docspell.photos-nas.ovh docspell +192.168.2.1 asus.photos-nas.ovh asus +192.168.2.1 www.asusrouter.com et12 +192.168.2.116 pihole1.photos-nas.ovh dietpi1 +192.168.2.216 pihole2.photos-nas.ovh dietpi2 + diff --git a/lan_2.list b/lan_2.list new file mode 100644 index 0000000..b324374 --- /dev/null +++ b/lan_2.list @@ -0,0 +1,23 @@ +192.168.2.57 navidrome.photos-nas.ovh navidrome +192.168.2.57 ds923.photos-nas.ovh dsm +192.168.2.57 maloja.photos-nas.ovh maloja +192.168.2.57 photos.photos-nas.ovh photos +192.168.2.57 change.photos-nas.ovh changedetection +192.168.2.57 search.photos-nas.ovh searxng +192.168.2.57 vault.photos-nas.ovh vaultwarten +192.168.2.57 menu.photos-nas.ovh heimdall +192.168.2.57 notif.photos-nas.ovh nfty +192.168.2.57 uptime.photos-nas.ovh uptime-kuma +192.168.2.57 dozzle.photos-nas.ovh dozzle +192.168.2.57 gotify.photos-nas.ovh gotify +192.168.2.57 igotify.photos-nas.ovh gotify-api +192.168.2.57 tautulli.photos-nas.ovh tautulli +192.168.2.57 glances.photos-nas.ovh glances +192.168.2.57 paperlessngx.photos-nas.ovh paperlessngx +192.168.2.57 docspell.photos-nas.ovh docspell +192.168.2.57 test.photos-nas.ovh test +192.168.2.1 asus.photos-nas.ovh asus +192.168.2.1 www.asusrouter.com et12 +192.168.2.116 pihole1.photos-nas.ovh dietpi1 +192.168.2.216 pihole2.photos-nas.ovh dietpi2 + diff --git a/sync_pihole_lan.sh b/sync_pihole_lan.sh new file mode 100755 index 0000000..84c7707 --- /dev/null +++ b/sync_pihole_lan.sh @@ -0,0 +1,128 @@ +#!/usr/bin/env bash + +italic="\033[3m" +underline="\033[4m" +ita_under="\033[3;4m" +bgd="\033[1;4;31m" +red="\033[1;31m" +bold="\033[1m" +bold_ita="\033[1;3m" +box="\033[1;41m" +redbold="\033[1;31m" +redbox="\033[1;41m" +green="\033[0;32m" +reset="\033[0m" + + +echo -e "${bold}Backup ${italic}lan.list...${reset}" + +ssh -p51322 root@192.168.2.116 "gzip -c cat /etc/pihole/lan.list" > lan.list.1.gz +echo "--" +ssh -p51522 root@192.168.2.216 "cat /etc/pihole/lan.list" > lan.list.2.gz + +cp lan.list.bak /tmp/lan.list +bzip2 /tmp/lan.list # lan.list.bz2 +mv /tmp/lan.list.bz2 . + +cp lan.list lan.list.bak + +nb_dynhost=$(awk 'END { print NR }' lan.list) +echo "$nb_dynhost dynhost found !" + +# nano /etc/pihole/lan.list + +#ssh -p51322 root@192.168.2.116 "cat /etc/pihole/lan.list" > /Users/bruno/Documents/Scripts/pihole/lan_1.list +#ssh -p51522 root@192.168.2.216 "cat /etc/pihole/lan.list" > /Users/bruno/Documents/Scripts/pihole/lan_2.list + + +# Zones DNS -> photos-nas.ovh -> Historique des zones + +absent=() +not_required=("drive" "files" "gitea" "home-assistant" "homebridge" "portainer" "wg" "yatch") +not_used=("ds916" "musiiic" "tunes") +dynhost_list=$(cat photos-nas.ovh_dns_data.txt | grep "60 IN A" | sed '1d') + +while IFS= read -r line; do + + dynhost=$(echo "${line}" | awk '{print $1}') + grep -q $dynhost lan.list + if [ $? != 0 ]; then + if [[ " ${not_required[*]} " != *"$dynhost"* ]] && [[ " ${not_used[*]} " != *"$dynhost"* ]]; then + absent+=(${dynhost}) + fi + fi + +done <<< "$dynhost_list" + +echo +echo -e "${bold}Update ${italic}lan.list...${reset}" +echo -e "${green}Not required: ${not_required[@]}${reset}" +#echo +echo -e "${italic}Not used: ${not_used[@]}${reset}" +#echo +echo -e "${red}Absent: ${absent[@]}${reset}" +#echo + +if [ ${#absent[@]} -ge 1 ]; then + + [ -f temp_file.list ] && rm temp_file.list + + for val in ${absent[@]} + do + echo -e "192.168.2.57 ${val}.photos-nas.ovh ${val}" >> temp_file.list + done + + cat temp_file.list >> lan.list +fi + +cat lan.list | sort -k2 > lan.list.sorted +mv lan.list.sorted lan.list + +echo +echo -e "${red}Display ${italic}lan.list...${reset}" +cat lan.list + +nb_dynhost=$(awk 'END { print NR }' lan.list) +echo "$nb_dynhost dynhost !" + +[ ${#absent[@]} -eq 0 ] && echo -e "\n${green}No new dynhost !${reset}" +a=$(echo -e "Do you want to export ${italic}lan.list${reset} to ${bold}pihole1${reset} and ${bold}pihole2${reset} ? (y/n)") +read -p "$a" choice +if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then + + #curl -Is https://google.com | head -1 | grep 200 1>/dev/null + #curl -Is https://1.1.1.1 | head -1 | grep 302 1>/dev/null + cat < /dev/null > /dev/tcp/1.1.1.1/53 + if [[ $? -ne 0 ]]; then + echo -e "\n${red}No Internet connection !${reset}" + echo -e "Exit !" + exit 1 + fi + + #echo "Export to pihole1..." + #cat lan.list | ssh -p51322 root@192.168.2.116 'cat > /etc/pihole/lan.list && pihole restartdns' + #[ $? != 0 ] && echo -e "${red}Error during transfer to pihole1 (192.168.2.116)${reset}" || echo -e "${green}Ok${reset}" + echo "Export to pihole1..." + cat lan.list | ssh -p51322 root@192.168.2.116 'cat > /etc/pihole/lan.list' + [ $? != 0 ] && echo -e "${red}Error during transfer to pihole1 (192.168.2.116)${reset}" || echo -e "${green}Ok${reset}" + + echo "Restarting dns on pihole1..." + ssh -p51322 root@192.168.2.116 'pihole restartdns' + [ $? != 0 ] && echo -e "${red}Error during restarting dns on pihole1 (192.168.2.116)${reset}" || echo -e "${green}Ok${reset}" + + echo "Export to pihole2..." + cat lan.list | ssh -p51522 root@192.168.2.216 'cat > /etc/pihole/lan.list' + [ $? != 0 ] && echo -e "${red}Error during transfer to pihole2 (192.168.2.216)${reset}" || echo -e "${green}Ok${reset}" + + echo "Restarting dns on pihole2..." + ssh -p51522 root@192.168.2.216 'pihole restartdns' + [ $? != 0 ] && echo -e "${red}Error during restarting dns on pihole2 (192.168.2.216)${reset}" || echo -e "${green}Ok${reset}" +fi + +[ -f temp_file.list ] && rm temp_file.list +[ -f lan.list.sorted ] && rm lan.list.sorted + + +#cat ~/Documents/Scripts/pihole/lan.list + +# dockge syno-dashboard yacy diff --git a/update_pihole.sh b/update_pihole.sh new file mode 100755 index 0000000..85c2cdf --- /dev/null +++ b/update_pihole.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +# Verify pihole version (run pihole -v) and send a notfication to Gotify + +italic="\033[3m" +underline="\033[4m" +ita_under="\033[3;4m" +bgd="\033[1;4;31m" +red="\033[1;31m" +green="\033[1;32m" +bold="\033[1m" +box="\033[1;41m" +reset="\033[0m" + +command -v pihole >/dev/null 2>&1 || { echo -e "${bold}pihole${reset} is not installed. Aborting..." >&2; exit 1; } + +curl -Is https://www.apple.com | head -1 | grep 200 1>/dev/null +if [[ $? -eq 1 ]]; then + echo -e "\n${red}No Internet connection !${reset}" + echo -e "Exit !" + exit 1 +fi + +dotenv () { + set -a + # shellcheck disable=SC1091 + [ -f ".env" ] && . ".env" || echo -e "${red}\nNo .env file found ! No token for gotify.${reset}" + set +a +} + +dotenv + +gotify_server="https://gotify.photos-nas.ovh" +host=$(hostname) +available=false +msg= +infos= + +echo -e "${box}Find Pi-hole update on $host${reset}\n" + +upd=$(pihole -v) +#upd=$(cat 'update_pihole.txt') + +printf " \e[1m%-10s \e[1m%-10s \e[1m%-10s \n" "Pi-hole" "Current" "Last" + +while IFS= read -r line; do + + app=$(echo "${line}" | awk '{print $1}') + current=$(echo "${line}" | awk '{print $4}') + last=$(echo "${line}" | awk '{print $6}' | sed 's/.$//') + + if [ "$current" != "$last" ]; then + printf " \e[1;31m%-10s\e[0m \e[1;31m%-10s\e[0m \e[1;31m%-10s\e[0m \n" "${app}" "${current}" "${last}" + msg+="**${app}: current:${current} last:${last}**\n" + available=true + infos+="https://github.com/pi-hole/${app}/releases/tag/${last}\n" + else + printf " \e[1;32m%-10s\e[0m \e[1;32m%-10s\e[0m \e[1;32m%-10s\e[0m \n" "${app}" "${current}" "${last}" + msg+="${app}: current:${current} last:${last}\n" + fi + +done <<< "$upd" + +echo -e "\n$infos" + +if [ "$available" = true ];then + + if [ ! -t 0 ]; then + # "I'm on a TTY, this is interactive." + a=$(echo -e "\nPlease run ${italic}pihole -up${reset} to update ! (y/n)") + read -p "$a" choice + if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then + pihole -up + fi + + else + echo -e "Sending notification to $gotify_server ..." + TITLE="Pi-hole on $host update" + MESSAGE="**A new version of Pi-hole is available:**\n\n $msg\n\n $infos\n\n Please run *pihole -up* on $host to update !" + PRIORITY=8 + URL="$gotify_server/message?token=$token&?format=markdown" + + curl -s -S --output /dev/null --data '{"message": "'"${MESSAGE}"'", "title": "'"${TITLE}"'", "priority":'"${PRIORITY}"', "extras": {"client::display": {"contentType": "text/markdown"}}}' -H 'Content-Type: application/json' "$URL" + fi + +else + echo -e "\nNo available update !" +fi