14-09-2025

Recherche des sous-domaines supplementaires dans lan.list (d'après subdomains.photos-nas.ovh.txt)
This commit is contained in:
2025-09-14 18:27:41 +02:00
parent 1e220cd809
commit 0cb49accf7
3 changed files with 167 additions and 53 deletions

View File

@@ -1,43 +1,70 @@
192.168.2.1 asus.photos-nas.ovh asus
192.168.2.1 www.asusrouter.com et12
192.168.2.57 adventurelog.photos-nas.ovh adventurelog
192.168.2.57 adventurelogapi.photos-nas.ovh adventurelogapi
192.168.2.57 airdrop.photos-nas.ovh airdrop
192.168.2.57 bearlytics.photos-nas.ovh bearlytics
192.168.2.57 birdnet.photos-nas.ovh birdnet
192.168.2.57 books.photos-nas.ovh books
192.168.2.57 change.photos-nas.ovh changedetection
192.168.2.57 checkcle.photos-nas.ovh checkcle
192.168.2.57 chibisafe.photos-nas.ovh chibisafe
192.168.2.57 dcommander.photos-nas.ovh dcommander
192.168.2.57 compose.photos-nas.ovh compose
192.168.2.57 diun.photos-nas.ovh diun
192.168.2.57 dockge.photos-nas.ovh dockge
192.168.2.57 docspell.photos-nas.ovh docspell
192.168.2.57 dockpeek.photos-nas.ovh dockpeek
192.168.2.57 dozzle.photos-nas.ovh dozzle
192.168.2.57 ds923.photos-nas.ovh dsm
192.168.2.57 freshrss.photos-nas.ovh freshrss
192.168.2.57 ftp.photos-nas.ovh ftp
192.168.2.57 git.photos-nas.ovh git
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 hoarder.photos-nas.ovh hoarder
192.168.2.57 igotify.photos-nas.ovh gotify-api
192.168.2.57 immich.photos-nas.ovh immich
192.168.2.57 invidious.photos-nas.ovh invidious
192.168.2.57 it-tools.photos-nas.ovh it-tools
192.168.2.57 linkwarden.photos-nas.ovh linkwarden
192.168.2.57 lunalytics.photos-nas.ovh lunalytics
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 materialious.photos-nas.ovh materialious
192.168.2.57 mealie.photos-nas.ovh mealie
192.168.2.57 menu.photos-nas.ovh heimdall
192.168.2.57 metube.photos-nas.ovh metube
192.168.2.57 navidrome.photos-nas.ovh navidrome
192.168.2.57 nextcloud.photos-nas.ovh nextcloud
192.168.2.57 nmap.photos-nas.ovh nmap
192.168.2.57 ntfy.photos-nas.ovh ntfy
192.168.2.57 omnitools.photos-nas.ovh omnitools
192.168.2.57 paperlessngx.photos-nas.ovh paperlessngx
192.168.2.57 pastebin.photos-nas.ovh pastebin
192.168.2.57 photos.photos-nas.ovh photos
192.168.2.57 pinchflat.photos-nas.ovh pinchflat
192.168.2.57 pingvin.photos-nas.ovh pingvin
192.168.2.57 piped.photos-nas.ovh piped
192.168.2.57 pipedapi.photos-nas.ovh pipedapi
192.168.2.57 pipedproxy.photos-nas.ovh pipedproxy
192.168.2.57 portracker.photos-nas.ovh portracker
192.168.2.57 psitransfer.photos-nas.ovh psitransfer
192.168.2.57 rustpad.photos-nas.ovh rustpad
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 shiori.photos-nas.ovh shiori
192.168.2.57 slink.photos-nas.ovh slink
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 trip.photos-nas.ovh trip
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 whoogle.photos-nas.ovh whoogle
192.168.2.57 wud.photos-nas.ovh wud
192.168.2.57 yacy.photos-nas.ovh yacy
192.168.2.57 ytweb.photos-nas.ovh ytweb
192.168.2.116 pihole1.photos-nas.ovh dietpi1
192.168.2.216 pihole2.photos-nas.ovh dietpi2

View File

@@ -1,55 +1,79 @@
adventurelog
adventurelogapi
airdrop
asus
bearlytics
birdnet
books
change
checkcle
chibisafe
dcommander
compose
diun
dockge
docspell
dockpeek
dozzle
drive
ds916
ds923
files
freshrss
ftp
git
gitea
glances
gokapi
gotify
hoarder
home-assistant
homebridge
igotify
immich
invidious
it-tools
lunalytics
linkwarden
maloja
maps-server
maps
materialious
mealie
menu
metube
musiiic
navidrome
nextcloud
notif
nmap
ntfy
omnitools
paperlessngx
pastebin
photos
pihole1
pihole2
pinchflat
pingvin
piped
pipedapi
pipedproxy
portainer
portracker
psitransfer
rustpad
seafile
search
send
shiori
slink
snippet
syno-dashboard
tautulli
test
trip
tube
tunes
uptime
vault
wg
whoogle
wud
yacy
yatch
ytweb

View File

@@ -26,17 +26,26 @@ reset="\033[0m"
absent=()
delete=()
extra=()
domain=".photos-nas.ovh"
not_required=("drive" "files" "gitea" "home-assistant" "homebridge" "portainer" "tunes" "wg" "www" "yatch")
not_required=("drive" "files" "gitea" "home-assistant" "homebridge" "portainer" "tunes" "wg" "www")
not_used=("ds916" "musiiic" "notif")
pihole1=192.168.2.116
pihole2=192.168.2.216
ScriptPath="$(readlink -f "$0")" # /Users/bruno/Documents/Scripts/bashbirds/bashbirds.sh
ScriptWorkDir="$(dirname "$ScriptPath")" # /Users/bruno/Documents/Scripts/bashbirds
echo -e "${greenbold}Sync_pihole_lan.sh synchronise the /etc/pihole/lan.list file with your Subdomains ...${reset}\n"
echo -e " For Pihole 6:"
echo -e " - edit Pihole preferences (nano /etc/pihole/pihole.toml)"
echo -e " - set etc_dnsmasq_d = true ### CHANGED, default = false"
echo
echo
: << 'COMMENTS'
COMMENTS
cat < /dev/null > /dev/tcp/1.1.1.1/53
if [[ $? -ne 0 ]]; then
echo -e "\n${red}No Internet connection !${reset}"
@@ -48,37 +57,37 @@ fi
echo -e "${bold}Backup ${italic}lan.list...${reset}"
# 1. Sauvegarde du /etc/pihole/lan.list de chaque pihole vers lan.list.1 et lan.list.2
ping -q -c1 "$pihole1" &>/dev/null && ssh -p51322 root@"$pihole1" "cat /etc/pihole/lan.list" > lan.list.1 || echo -e "\n${red}Pihole1 is unreachable !'${reset}"
ping -q -c1 "$pihole2" &>/dev/null && ssh -p51522 root@"$pihole2" "cat /etc/pihole/lan.list" > lan.list.2 || echo -e "${red}Pihole2 is unreachable !'${reset}"
ping -q -c1 "$pihole1" &>/dev/null && ssh -p51322 root@"$pihole1" "cat /etc/pihole/lan.list" > $ScriptWorkDir/lan.list.1 || echo -e "\n${red}Pihole1 is unreachable !'${reset}"
ping -q -c1 "$pihole2" &>/dev/null && ssh -p51522 root@"$pihole2" "cat /etc/pihole/lan.list" > $ScriptWorkDir/lan.list.2 || echo -e "${red}Pihole2 is unreachable !'${reset}"
# Si un lan.list.bak existe, on l'archive
if [ -f lan.list.bak ]; then
cp lan.list.bak /tmp/lan.list
if [ -f "$ScriptWorkDir/lan.list.bak" ]; then
cp "$ScriptWorkDir/lan.list.bak" /tmp/lan.list
bzip2 /tmp/lan.list # lan.list.bz2
mv /tmp/lan.list.bz2 .
fi
# On backup le lan.list vers lan.list.bak (sinon lan.list.1 devient lan.list)
if [ -f lan.list ]; then
cp lan.list lan.list.bak
elif [ -f lan.list.1 ]; then
cp lan.list.1 lan.list
elif [ -f lan.list.2 ]; then
cp lan.list.2 lan.list
if [ -f $ScriptWorkDir/lan.list ]; then
cp $ScriptWorkDir/lan.list $ScriptWorkDir/lan.list.bak
elif [ -f $ScriptWorkDir/lan.list.1 ]; then
cp $ScriptWorkDir/lan.list.1 $ScriptWorkDir/lan.list
elif [ -f $ScriptWorkDir/lan.list.2 ]; then
cp $ScriptWorkDir/lan.list.2 $ScriptWorkDir/lan.list
else
echo "Error ! No lan.list file !"
exit
fi
COMMENTS
nb_dynhost=$(awk 'END { print NR }' lan.list)
nb_dynhost=$(awk 'END { print NR }' $ScriptWorkDir/lan.list)
echo -e "\n$nb_dynhost dynhost found in lan.list !"
# 2. Suppression des 'not_required' et 'not_used' dans le lan.list
echo -e "${bold}\nFind extra dynhost in ${italic}lan.list...${reset}"
echo -e "${bold}\nFind not_used and not_required dynhost in ${italic}lan.list...${reset}"
while IFS= read -r line; do
@@ -89,7 +98,7 @@ while IFS= read -r line; do
fi
fi
done < lan.list
done < $ScriptWorkDir/lan.list
if [ ${#delete[@]} -ge 1 ]; then
@@ -110,7 +119,7 @@ if [ ${#delete[@]} -ge 1 ]; then
echo "$nb_dynhost dynhost found in lan.list !"
fi
else
echo "None"
echo -e "${green}None !${reset}"
fi
@@ -119,12 +128,12 @@ fi
echo -e "${bold}\nFind missing dynhost in ${italic}lan.list...${reset}"
#dynhost_list=$(cat photos-nas.ovh_dns_data.txt | grep "60 IN A" | sed '1d')
dynhost_list=$(cat subdomains.photos-nas.ovh.txt)
dynhost_list=$(cat $ScriptWorkDir/subdomains.photos-nas.ovh.txt)
while IFS= read -r line; do
dynhost=$(echo "${line}" | awk '{print $1}')
grep -q $dynhost lan.list
grep -q $dynhost $ScriptWorkDir/lan.list
if [ $? != 0 ]; then
if [[ ! " ${not_required[*]} " =~ " $dynhost " ]] && [[ ! " ${not_used[*]} " =~ " $dynhost " ]]; then
absent+=(${dynhost})
@@ -154,29 +163,70 @@ if [ ${#absent[@]} -ge 1 ]; then
cat /tmp/temp_file.list
# On ajoute le /tmp/temp_file.list au lan.list
cat /tmp/temp_file.list >> lan.list
cat /tmp/temp_file.list >> $ScriptWorkDir/lan.list
# On trie le lan.list
cat lan.list | sort -k2 > lan.list.sorted
mv lan.list.sorted lan.list
cat $ScriptWorkDir/lan.list | sort -k2 > $ScriptWorkDir/lan.list.sorted
mv $ScriptWorkDir/lan.list.sorted $ScriptWorkDir/lan.list
else
echo -e "${green}No new dynhost !${reset}"
fi
# 4. Recherche des sous-domaines supplementaires dans lan.list (d'après subdomains.photos-nas.ovh.txt)
echo -e "${bold}\nRemove extra dynhost in ${italic}lan.list...${reset}"
lan_list=$(cat $ScriptWorkDir/lan.list)
while IFS= read -r line; do
dynhost=$(echo "${line}" | awk '{print $2}' | awk -F"." '{print $1}')
grep -q $dynhost $ScriptWorkDir/subdomains.photos-nas.ovh.txt
if [ ! $? != 0 ]; then
echo "${line}" >> /tmp/extra.txt
else
extra+=(${dynhost})
fi
if [[ "$dynhost" == *www* ]]; then
echo "${line}" >> /tmp/extra.txt
#extra=( "${extra[@]/$dynhost}" )
# on supprime www et on reconstruit le tableau
new_array=()
for value in "${extra[@]}"
do
[[ $value != $dynhost ]] && new_array+=("$value")
done
extra=("${new_array[@]}")
unset new_array
fi
done <<< "$lan_list"
if [ ${#extra[@]} -ge 1 ]; then
echo "${extra[@]}"
else
echo -e "${green}No extra dynhost !${reset}"
fi
cp /tmp/extra.txt $ScriptWorkDir/lan.list
[ -f /tmp/extra.txt ] && rm /tmp/extra.txt
echo
echo -e "${bold}Display ${italic}lan.list. Please verify IP and subdomains.${reset}"
cat lan.list
cat $ScriptWorkDir/lan.list
nb_dynhost=$(awk 'END { print NR }' lan.list)
nb_dynhost=$(awk 'END { print NR }' $ScriptWorkDir/lan.list)
echo -e "$nb_dynhost dynhost !\n"
# Do you want to modify lan.list ?
a=$(echo -e "Do you want to edit ${italic}lan.list${reset} ? (y/n)")
read -p "$a" choice
if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then
nano -l lan.list
nano -l $ScriptWorkDir/lan.list
fi
@@ -184,7 +234,7 @@ fi
: << 'COMMENTS2'
echo "toto"
COMMENTS2
b=$(echo -e "Do you want to export ${italic}lan.list${reset} to ${bold}pihole1${reset} ($pihole1) and ${bold}pihole2${reset} ($pihole2) ? (y/n)")
read -p "$b" choice
@@ -192,12 +242,16 @@ if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then
if ping -q -c1 "$pihole1" &>/dev/null; then
echo "Export to pihole1..."
cat lan.list | ssh -p51322 root@"$pihole1" 'cat > /etc/pihole/lan.list'
cat $ScriptWorkDir/lan.list | ssh -p51322 root@"$pihole1" 'cat > /etc/pihole/lan.list'
[ $? != 0 ] && echo -e "${red}Error during transfer to pihole1 ($pihole1)${reset}" || echo -e "${green}Ok${reset}"
echo "Restarting dns on pihole1..."
ssh -p51322 root@"$pihole1" 'pihole restartdns'
[ $? != 0 ] && echo -e "${red}Error during restarting dns on pihole1 ($pihole1)${reset}" || echo -e "${green}Ok${reset}"
# pihole 5
#echo "Restarting dns on pihole1..."
#ssh -p51322 root@"$pihole1" 'pihole restartdns'
# pihole 6
echo "Update the lists and flush the cache without restarting the DNS server on pihole1..."
ssh -p51322 root@"$pihole1" 'pihole reloaddns'
[ $? != 0 ] && echo -e "${red}Error during reloading dns on pihole1 ($pihole1)${reset}" || echo -e "${green}Ok${reset}"
else
echo -e "\n${red}Pihole1 is unreachable !'${reset}"
fi
@@ -205,20 +259,24 @@ if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then
if ping -q -c1 "$pihole2" &>/dev/null; then
echo "Export to pihole2..."
cat lan.list | ssh -p51522 root@"$pihole2" 'cat > /etc/pihole/lan.list'
cat $ScriptWorkDir/lan.list | ssh -p51522 root@"$pihole2" 'cat > /etc/pihole/lan.list'
[ $? != 0 ] && echo -e "${red}Error during transfer to pihole2 ($pihole2)${reset}" || echo -e "${green}Ok${reset}"
echo "Restarting dns on pihole2..."
ssh -p51522 root@"$pihole2" 'pihole restartdns'
[ $? != 0 ] && echo -e "${red}Error during restarting dns on pihole2 ($pihole2)${reset}" || echo -e "${green}Ok${reset}"
# pihole 5
#echo "Restarting dns on pihole2..."
#ssh -p51522 root@"$pihole2" 'pihole restartdns'
# pihole 6
echo "Update the lists and flush the cache without restarting the DNS server on pihole2..."
ssh -p51522 root@"$pihole2" 'pihole reloaddns'
[ $? != 0 ] && echo -e "${red}Error during reloading dns on pihole2 ($pihole2)${reset}" || echo -e "${green}Ok${reset}"
else
echo -e "n${red}Pihole2 is unreachable !'${reset}"
echo -e "\n${red}Pihole2 is unreachable !'${reset}"
fi
else
echo -e "OK, let's continue..."
fi
COMMENTS2
# 5. On compare la liste principale des sous-domaines subdomains.photos-nas.ovh.txt avec la zone photos-nas.ovh sur ovh (via l'API)
@@ -232,7 +290,7 @@ TIME=$(curl -s https://api.ovh.com/1.0/auth/time)
ZONE_FILE="zone.photos-nas.ovh"
ZONE="photos-nas.ovh"
source ovh_secrets.txt
source $ScriptWorkDir/ovh_secrets.txt
export_zone() {
HTTP_METHOD="GET"
@@ -327,8 +385,8 @@ export_zone
#ovh_cname_list=$(cat photos-nas.ovh_dns_data.txt | grep "CNAME" | sed '1d')
ovh_cname_list=$(cat $ZONE_FILE)
subdomains_list=$(cat subdomains.photos-nas.ovh.txt)
ovh_cname_list=$(cat $ScriptWorkDir/$ZONE_FILE)
subdomains_list=$(cat $ScriptWorkDir/subdomains.photos-nas.ovh.txt)
extra_ovh=()
absent_ovh=()
@@ -337,7 +395,7 @@ echo -e "${bold}\nFind extra CNAME records in zone ${italic}$ZONE${reset}..."
while IFS= read -r line; do
dynhost=$(echo "${line}" | awk '{print $1}')
grep -q $dynhost subdomains.photos-nas.ovh.txt
grep -q $dynhost $ScriptWorkDir/subdomains.photos-nas.ovh.txt
if [ $? != 0 ]; then
if [[ ! " ${not_required[*]} " =~ " $dynhost " ]] && [[ ! " ${not_used[*]} " =~ " $dynhost " ]]; then
@@ -379,7 +437,7 @@ echo -e "${bold}\nFind missing CNAME records in zone ${italic}$ZONE${reset}..."
while IFS= read -r line; do
dynhost=$(echo "${line}" | awk '{print $1}')
grep -q $dynhost zone.photos-nas.ovh
grep -q $dynhost $ScriptWorkDir/zone.photos-nas.ovh
if [ $? != 0 ]; then
if [[ ! " ${not_required[*]} " =~ " $dynhost " ]] && [[ ! " ${not_used[*]} " =~ " $dynhost " ]]; then
@@ -416,7 +474,12 @@ fi
# 6. On supprime les fichiers temporaires
[ -f /tmp/temp_file.list ] && rm /tmp/temp_file.list
[ -f lan.list.sorted ] && rm lan.list.sorted
[ -f $ScriptWorkDir/lan.list.sorted ] && rm $ScriptWorkDir/lan.list.sorted
# 7. fin
echo -e "\n${greenbold}Fin !${reset}"
# https://www.nas-forum.com/forum/topic/80160-multiples-dynhost-ovh/#comment-1319505612