J'ai créé un script bash pour transférer mes zones entre mon serveur DNS primaire et secondaire. Il télécharge ma liste de zone à partir du serveur principal et recherche les nouvelles zones, puis télécharge et insère ces fichiers de zone dans le répertoire de la zone et dans le fichier .local pour bind. Le problème que j'ai est que si le fichier de zone n'existe pas, le script va entrer les détails dans le fichier .local indépendamment du fait que cette configuration existe déjà ou non.Bind9 Script de transfert de zone DNS - Script Bash pour éviter les doublons
Quelqu'un peut-il m'aider à faire la distinction entre les zones qui existent déjà et simplement télécharger le fichier de zone. J'ai collé mon script ci-dessous et si quelqu'un a des questions sur comment cela fonctionne, n'hésitez pas à demander. (quelqu'un peut envelopper le code s'il vous plaît, il ne fonctionne correctement pour moi dans tout navigateur, j'essaie!)
#!/bin/sh
NAMED="/etc/bind/named.conf.local"
TMPNAMED="/tmp/zns-441245.temp"
TMPZONEFILE="/tmp/zones.txt"
TMP="/tmp/zns-732.temp"
ZONELOCATION="/var/cache/bind"
IGNORE=`cat ignore.txt`
logger DNS Update script running...
echo -n "Checking for new named.conf... "
wget -q http://91.121.75.205:10801/named/named.conf -O $TMPNAMED
if [ -e $TMPNAMED ]
then
echo "done."
else
echo "no new data!"
exit
fi
echo -n "Generating zone names... "
grep "^zone" $TMPNAMED | cut -d " " -f "2" | cut -d "\"" -f 2 > $TMPZONEFILE
sed '1,5d' $TMPZONEFILE > $TMP
mv $TMP $TMPZONEFILE
echo "done. ("$TMPZONEFILE")"
echo "Generating zone info... "
grep -vf ignore.txt $TMPZONEFILE | while read ZONE; do
echo -n "Checking for $ZONELOCATION/$ZONE.db "
if [ -e $ZONELOCATION/$ZONE.db ]
then
echo "[ exists ]"
else
export updates="yes"
echo "[ doesn't exist ]"
echo "New zone available ($ZONE)... "
echo "zone \"$ZONE\" {
type slave;
file \"$ZONELOCATION/$ZONE.db\";
masters { 91.121.75.205; };
allow-notify { 91.121.75.205; };
};" >> $NAMED
fi
done
echo "Updating Bind configuration... "
/etc/init.d/bind9 restart
rm $TMPZONEFILE
rm $TMPNAMED
Votre question est étiquetée '[bash]' mais votre shebang dit '#!/Bin/sh'. Lequel est-ce? –