Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/08/2016, à 12:03

Boulvards

Script Bash Interrogation blacklist

Hello all,

Je viens vers vous car je manque d'inspiration pour un script que j'essaye de mettre en place en gros voici ce que ça donne actuellement :

# /bin/bash

serveur005=`dig 37.69.196.5.zen.spamhaus.org +short` #serveur005 5.196.69.37

if [ "$serveur005" = "127.0.0.4" ];
 
 then
 
	echo "Le serveur005 est blacklist chez CBL"
 
 elif [ "$serveur005" = "127.0.0.2" ];
 
 then
 
	echo "Le serveur005 est blacklist chez Spamhaus"
 else
 
	echo "Le serveur005 est propre"

fi

Ca marche sans problème pour un serveur sauf que mon problème c'est que j'en ai une bonne vingtaine maintenant et je vois pas comment obtenir un script pas trop lourd comme par exemple déclarer ttes les variables en début de fichier puis les interroger avec un seul if/elif/else. Une idée ?

Hors ligne

#2 Le 21/08/2016, à 12:10

pingouinux

Re : Script Bash Interrogation blacklist

Bonjour,
Peux-tu montrer un exemple avec deux serveurs, pour voir ce qui change ?

Hors ligne

#3 Le 21/08/2016, à 17:24

Watael

Re : Script Bash Interrogation blacklist

salut,

je ne suis pas sûr d'avoir bien compris ta requête.

pour itérer sur les éléments d'une variable (il serait d'ailleurs peut-être plus propre d'utiliser une "variable" tableau/liste), on utilise une boucle for.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 22/08/2016, à 09:13

Boulvards

Re : Script Bash Interrogation blacklist

Pour l'instant si je mets deux serveurs :

# /bin/bash

serveur005=`dig 37.69.196.5.zen.spamhaus.org +short` #serveur005 5.196.69.37

if [ "$serveur005" = "127.0.0.4" ];
 
 then
 
	echo "Le serveur005 est blacklist chez CBL"
 
 elif [ "$serveur005" = "127.0.0.2" ];
 
 then
 
	echo "Le serveur005 est blacklist chez Spamhaus"
 else
 
	echo "Le serveur005 est propre"

fi

serveur004=`dig 33.69.196.5.zen.spamhaus.org +short` #serveur004 5.196.69.33

if [ "$serveur004" = "127.0.0.4" ];
 
 then
 
	echo "Le serveur004 est blacklist chez CBL"
 
 elif [ "$serveur004" = "127.0.0.2" ];
 
 then
 
	echo "Le serveur004 est blacklist chez Spamhaus"
 else
 
	echo "Le serveur004 est propre"

fi

et la même chose pour les 18 autres serveurs, j'atteinds facilement un script de 400 lignes alors que, ce que je chercherai à faire serait plutot :

serveur005=`dig 37.69.196.5.zen.spamhaus.org +short` #serveur005 5.196.69.37
serveur004=`dig 33.69.196.5.zen.spamhaus.org +short` #serveur004 5.196.69.33

if [ "$serveur*" = "127.0.0.4" ];
 
 then
 
	echo "Le $serveur* est blacklist chez CBL"
 
 elif [ "$serveur*" = "127.0.0.2" ];
 
 then
 
	echo "Le $serveur* est blacklist chez Spamhaus"
 else
 
	echo "Le $serveur* est propre"

fi

Bien entendu ce code ne fonctionne pas mais je cherche un équivalent.

Comment tu t'y prendrai avec tableau + for ? Tu as un exemple ?

Dernière modification par Boulvards (Le 22/08/2016, à 09:13)

Hors ligne

#5 Le 22/08/2016, à 10:11

pingouinux

Re : Script Bash Interrogation blacklist

Je n'ai pas testé, mais tu peux essayer quelque chose de ce genre

while read num ip
do
    serveur=`dig $ip.69.196.5.zen.spamhaus.org +short`
    if [ "$serveur" = "127.0.0.4" ];
    then
        echo "Le serveur$num est blacklist chez CBL"
    elif [ "$serveur" = "127.0.0.2" ];
    then
        echo "Le serveur$num est blacklist chez Spamhaus"
    else
        echo "Le serveur$num est propre"
    fi
done <<<"005 37
         004 33"

Ajouté : La liste en fin de script correspond à ceci
serveur005=`dig 37.69.196.5.zen.spamhaus.org +short`
serveur004=`dig 33.69.196.5.zen.spamhaus.org +short`

Dernière modification par pingouinux (Le 22/08/2016, à 10:34)

Hors ligne

#6 Le 22/08/2016, à 15:18

Watael

Re : Script Bash Interrogation blacklist

Comment tu t'y prendrais avec tableau + for ? Tu as un exemple ?

mapfile nameNip < <(dig 3{3,7}.69.196.5.zen.spamhaus.org +short)
test -n "$nameNip" || {echo "no result" >&2; exit 1;}
for i in "${nameNip[@]}"
do
   [[ $i == 127.0.0[23]  ]] && echo "$i blacklisté shez SpamHaus" || echo "$i est OK !"
done

la description reste vague, alors ce script peut ne pas répondre complètement à tes attentes.

que retourne dig ? je n'obtiens aucun résultat.
tu n'interroge que ces deux serveurs spamhaus ?

Dernière modification par Watael (Le 22/08/2016, à 15:20)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne