# \[Résolu\] Script bash - community name Vide - snmpwalk

**URL:** <https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238 "2016-02-20T17:10:07Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ludo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ludo/32/3426_2.png) [@Ludo](https://www.debian-fr.org/u/Ludo)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/1 "2016-02-20T17:10:07Z")

</div>

Salut à tous,

J’ai un petit problème pour un script que j’essaye d’améliorer. j’ai ajouter des options à mon script via un ‘case’ pour que cela fasse plus propre, mais je me rend compte que l’options du nom de communauté de la commande ‘snmpwalk’ que j’invoque dans mon script est vide.

j’ai par ailleurs remarqué lorsque j’utilise la commande que le nom de communauté est toujours vide (e.g. ps -ax):

```auto
 /usr/bin/snmpwalk -v 2c -c ip_address .1.3.6.1.4.1.334.72.1.1.2
```

Est-ce lié ?

De plus j’ai beau chercher je ne trouve pas de script bash sur le net qui utiliserai “snmpwalk”, y’a bien la solution d’écrire tout en Perl mais ceci est mon premier gros script et je métrise encore moins le Perl.

Enfin je post à tout hasard si jamais quelqu’un a déjà rencontré le problème.

```auto
#! /bin/bash

#########################################################################################
#
# Author: Ludo
# Date: 2008.01.11
#########################################################################################

PROGNAME="check_AV_update.sh"
VERSION="1.0"
AUTHOR="(c) 2008 Ludo"
LASTCHANGE="2008.02.18"

# EXIT CODE

STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4

# COMMANDS

CAT=/bin/cat
GREP=/bin/grep
CUT=/bin/cut
SED=/bin/sed
AWK=/usr/bin/awk
ECHO=/bin/echo
LS=/bin/ls
PATH_TMP=/tmp
SNMP=/usr/bin/snmpwalk

# HELP AND USAGE
print_version() {
        $ECHO ""
        $ECHO "------------------------------------------------------------------------------------"         
        $ECHO "$PROGNAME - V$VERSION, by $AUTHOR - Last Modification: $LASTCHANGE"
        $ECHO "------------------------------------------------------------------------------------"
        $ECHO ""
}

print_usage() {

   $ECHO ""
   $ECHO ""
   $ECHO "Usage: $PROGNAME [-h|-V] | --com=<public> --hostaddress=<ip_address> -w <warning_value> -c <critical_value>"; $ECHO ""
   $ECHO " -h, --help"; $ECHO "print the help message and exit"
   $ECHO " -V"; $ECHO "print version and exit"
   $ECHO " --hostaddress=*"; $ECHO "Host Address"
   $ECHO " --com=*"; $ECHO "community name"
   $ECHO " -w n"; $ECHO "warning day for database age"
   $ECHO " -c n"; $ECHO "critical day for database age"
   $ECHO ""
   $ECHO ""
}

print_help() {
   print_version
   $ECHO ""
   $ECHO "Plugin for Nagios to check the LNSNMP OID for AV datatbase age"
   $ECHO ""
   print_usage
   $ECHO ""
}

# Make sure the correct argument have been supplied

if [[! `$ECHO "$*" | $GREP -E "(-[hVwc]\>|--(help|com|hostaddress)=)"` ]]; then
    print_usage
    exit $STATE_UNKNOWN
fi

# grab the command line arguments

thresh_warn=""
thresh_crit=""
hostaddress=""
com=""
while test -n "$1"; do

        case "$1" in
                --help)
                        print_help
                        exit $STATE_OK
                        ;;
                -h)
                        print_help
                        exit $STATE_OK
                        ;;
                -V)
                        print_version
                        exit $STATE_OK
                        ;;
                --com=*)
                        com=`$ECHO $2 | cut -d= -f2`
                        shift
                        ;;
                --hostaddress=*)
                        hostaddress=`$ECHO $1 | cut -d= -f2`
# if [[`expr match "$hostaddress" '\[0-9]*.[0-9]*.[0-9]*.[0-9]*\'` != $hostaddress ]] || [-z $hostaddress]; then
# $ECHO "The address ip is not valid"
# exit $STATE_UNKNOWN
# fi
                        shift
                        ;;
                -w)
                        thresh_warn=$2
# if [[`expr match "$thresh_warn" '\([0-9]*\)'` != $thresh_warn ]] || [-z $thresh_warn]; then
# $ECHO "Warning value must be a number greater than zero"
# exit $STATE_UNKNOWN
# fi
                        shift
                        ;;
                -c)
                        thresh_crit=$2
# if [[`expr match "$thresh_warn" '\([0-9]*\)'` != $thresh_warn ]] || [-z $thresh_warn]; then
# $ECHO "Criticale value must be a number greater than zero"
# exit $STATE_UNKNOWN
# fi
                        shift
                        ;;
                *)
                        $ECHO "UNKNOW argument: $1"
                        print_usage
                        exit $STATE_UNKNOWN
                        ;;
        esac
   shift
done

$ECHO ------------------------
$ECHO $hostaddress
$ECHO $com
$ECHO $thresh_warn
$ECHO $thresh_crit
$ECHO ------------------------

###########
# VARIABLES
###########

NOW=$(date +%c | $CUT -d\ -f1-5)
CHECK=/usr/bin/check_lnsmp_Mibs.sh
NOTES_MIBS=.1.3.6.1.4.1.334
NOTES_MIBS_START=.1.3.6.1.4.1.334.72.1.1.3
NOTES_MIBS_START_NAME=NOTES-MIB::lnStatsCurrentTime.0
NAME_AGE=SAV.Current.Definitions.Age
NAME_DATE=SAV.Current.Definitions.Date

#####################
# Check if file exist
#####################

FILE=$($LS $PATH_TMP/tmp_Nagios-$hostaddress-result.lnsnmp)

if [[$FILE == ""]];
    then
       $CHECK hostname $hostaddress
fi

# DEBUG
#$ECHO -------
#$ECHO $FILE
#$ECHO -------
# DEBUG

#####################
# assign value to VAR
#####################

DATE_MIB_FILE=$($CAT /tmp/tmp_Nagios-$hostaddress-result.lnsnmp | grep $NOTES_MIBS_START_NAME | $CUT -d\ -f4 )
DATE_MIB_SNMP=$($SNMP -v 2c -c $com $hostaddress $NOTES_MIBS_START | $CUT -d\ -f4)

#$ECHO --------
#$ECHO $DATE_MIB_FILE
#$ECHO $DATE_MIB_SNMP
#$ECHO --------

########################
# Verify the date of mib
########################

if [[$DATE_MIB_FILE == ""]];
   then
        $CHECK hostname $hostaddress
 elif [[$DATE_MIB_FILE != $DATE_MIB_SNMP]];
   then
         $CHECK hostname $hostaddress
fi

##################################
# Assign Value to ask the good OID
##################################

SNMP_DMAJ=$($CAT $PATH_TMP/tmp_Nagios-$hostaddress-result.lnsnmp | $GREP -i $NAME_AGE | $CUT -d\ -f1)
SNMP_IMAJ=$($CAT $PATH_TMP/tmp_Nagios-$hostaddress-result.lnsnmp | $GREP -i $NAME_DATE | $CUT -d\ -f1)
DMAJ=$($SNMP -v 2c -c $com $hostaddress $SNMP_DMAJ | $CUT -d\ -f6 | $CUT -d\" -f1)
IMAJ=$($SNMP -v 2c -c $com $hostaddress $SNMP_IMAJ | $CUT -d\ -f6 | $CUT -d\" -f1)

#$ECHO ------
#$ECHO $DMAJ
#$ECHO $SNMP_DMAJ
#$ECHO $IMAJ
#$ECHO $SNMP_IMAJ
#$ECHO ------
#################################################################################
# check if the result is not null and verify the age of the Malaware/AV database.
#################################################################################

if [[$DMAJ > $thresh_warn]];
  then
        echo "$NOW :$($ECHO "The last update:" $IMAJ | $CUT -d= -f1-3) : WARNING"
        exit $STATE_WARNING
 elif [[$DMAJ = ""]] ;
   then
        echo "$NOW : No response from this host"
        exit $STATE_UNKNOWN
 elif [[$DMAJ > $thresh_crit]];
   then
        echo "$NOW :$($ECHO "The last update:" $IMAJ | $CUT -d= -f1-3) : CRITICAL"
        exit $STATE_CRITICAL
 elif [[$DMAJ < $thresh_warn]];
   then
         echo "$NOW :$($ECHO "The last update:" $IMAJ | $CUT -d= -f1-3) : OK"
         exit $STATE_OK
fi
```

Merci de vos lecture 😉

p.s.: La variable $CHECK qui pointe vers le programme check\_lnmp\_Mibs.sh est juste un script qui lance une requête snmpwalk sur l’OIDs Lotus et l’envoi vers un fichier

p.s. 2: Si vous avez des avis ou remarque je suis toutes ouies ^^

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/2 "2016-02-20T17:10:25Z")

</div>

Alors je n’y connais rien de rien à snmp (vraiment), et je ne connais pas le sens des mots que je vais utiliser, mais je causais l’autre jour avec un pôte qui travaillait sur des trucs snmp, et qui me disait qu’il etait obligé de réécrire des mib (c’est ça le terme ?) parceque justement son snmpwalk, sans lui donner d’erreur, ne lui renvoyait rien.  
Ou un truc comme ça.  
Enfin si cette info peut t’aider… 😉

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/3 "2016-02-20T17:10:26Z")

</div>

Il écoute même pas ses amis 😲😒🙂

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/4 "2016-02-20T17:10:27Z")

</div>

> [@](#):
>
> Il écoute même pas ses amis 😲😒🙂

Ecouter, si. C’est retenir ce qu’on me dit quand je n’y comprends rien qui est plus dur. 😆

---

<div class="post-metadata">

**Author:** ![Ludo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ludo/32/3426_2.png) [@Ludo](https://www.debian-fr.org/u/Ludo)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/5 "2016-02-20T17:10:28Z")

</div>

[quote=“mattotop”]Alors je n’y connais rien de rien à snmp (vraiment), et je ne connais pas le sens des mots que je vais utiliser, mais je causais l’autre jour avec un pôte qui travaillait sur des trucs snmp, et qui me disait qu’il etait obligé de réécrire des mib (c’est ça le terme ?) parceque justement son snmpwalk, sans lui donner d’erreur, ne lui renvoyait rien.  
Ou un truc comme ça.  
Enfin si cette info peut t’aider… 😉[/quote]

C’est plutôt avec le commande que j’ai des problème plus qu’avec snmp. Mais c’est pas grave je commence à réecrire tout en Perl ca me fera un bon exercice ^^

Enfin si quelqu’un sait me dire pourquoi ça marche pas, le fait que le nom de communauté de la commande ne reste pas dans la variable, je suis preneur, car j’aime pas ne ‘pas savoir pourquoi’ 😛

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/6 "2016-02-20T17:10:31Z")

</div>

Ton argument c’est bien de la forme :

```auto

```

?

Si c’est le cas le problème viens de:

`--com=*)
    com=`$ECHO $2 | cut -d= -f2`
    shift
    ;;`  
parce que à ce moment là $1 contient --com=salut, $2 je sais pas ce qu’il contient ça dépend de comment est lancé ton script donc met

`--com=*)
    com=`$ECHO $1 | cut -d= -f2`
    shift
    ;;`  
Et ça devrait être bon 😉

---

<div class="post-metadata">

**Author:** ![Ludo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ludo/32/3426_2.png) [@Ludo](https://www.debian-fr.org/u/Ludo)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/7 "2016-02-20T17:10:32Z")

</div>

Ooo… oui bien vu je l’avais changer pour “–hostaddress=” mais pas pour “–com=”, merci de ton regard averti 😃

[EDIT après changement]

En fait c’est le deuxième élément de ma commande qui est vide.

Quand je fait :

`./check_AV_update-V2.sh --com=public --hostaddress=10.0.0.1000 -w 6 -c 10
`

c’est la variable de l’option ‘–hostaddress’ qui est vide, mais quand je fait:

`./check_AV_update-V2.sh --hostaddress=10.0.0.1000 --com=public -w 6 -c 10
`

C’est la variable qui est sensé avoir le nom de communauté qui est vide. Le problème doit se situé au niveau du case, mais comme je débute je ne maitrise pas encore très bien.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/8 "2016-02-20T17:10:34Z")

</div>

En fait tu fais des shift en trop. Tu en fait un à la fin de chaque while et un à la fin de chaque traitement de paramètre alors que pour le --com et le --hostadress un seul suffit.

Donc tu supprime juste le shift du case de --com et de --hostadress 😲

---

<div class="post-metadata">

**Author:** ![Ludo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ludo/32/3426_2.png) [@Ludo](https://www.debian-fr.org/u/Ludo)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/9 "2016-02-20T17:10:34Z")

</div>

Et bien je serais curieux d’avoir une explication sur cela, j’ai remplacer le “–com=” et “–hostaddress=” par un “-C” et “-H” ce qui donne ceci:

```auto
                      -C)
                        com=$2
                        shift
                        ;;
                      -H)
                        hostaddress=$2
                        shift
                        ;;
```

A la place de ceci:

```auto
                --com=*)
                        com=`$ECHO $1 | cut -d= -f2`
                        shift
                        ;;
                --hostaddress=*)
                        hostaddress=`$ECHO $1 | cut -d= -f2`
                        shift
                        ;;
```

Super étrange … Enfin si quelqu’un a une explication rationnel je suis preneur car la je nage 😉

---

<div class="post-metadata">

**Author:** ![Ludo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ludo/32/3426_2.png) [@Ludo](https://www.debian-fr.org/u/Ludo)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/10 "2016-02-20T17:10:34Z")

</div>

[quote=“MisterFreez”]En fait tu fais des shift en trop. Tu en fait un à la fin de chaque while et un à la fin de chaque traitement de paramètre alors que pour le --com et le --hostadress un seul suffit.

Donc tu supprime juste le shift du case de --com et de --hostadress 😲[/quote]

ha bon ? ben je vais tester.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/11 "2016-02-20T17:10:34Z")

</div>

C’est ce que je te disait tout à l’heure.

Les paramètres de type

```auto

```

sont en deux mots donc il te faut deux shifts pour les supprimer de la ligne de commande.

Les paramètres de type

```auto

```

sont en un seul mot donc un seul shift suffit pour les passer.

Or tu fais un shift dans chaque case et un à la fin ce qui fait 2

---

<div class="post-metadata">

**Author:** ![Ludo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ludo/32/3426_2.png) [@Ludo](https://www.debian-fr.org/u/Ludo)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/12 "2016-02-20T17:10:34Z")

</div>

Ca marche nickel, j’ai même agrémenté le script avec --com et -C ou --hostaddress et -H.  
Et j’ai mieux compris l’utilité de “shift”

Merci de ton aide 😃

[quote=“MisterFreez”]C’est ce que je te disait tout à l’heure.

Les paramètres de type

```auto

```

sont en deux mots donc il te faut deux shifts pour les supprimer de la ligne de commande.

Les paramètres de type

```auto

```

sont en un seul mot donc un seul shift suffit pour les passer.

Or tu fais un shift dans chaque case et un à la fin ce qui fait 2[/quote]

Je viens de lire une peu de doc sur le shift, je ne m’étais pas attarder assez sur la chose ^^

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/13 "2016-02-20T17:10:35Z")

</div>

> [@](#):
>
> Ca marche nickel, j’ai même agrémenté le script avec --com et -C ou --hostaddress et -H.

Tu a pris en compte l’utilisateur qui t’envoie les deux ?

```auto

```

---

<div class="post-metadata">

**Author:** ![Ludo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ludo/32/3426_2.png) [@Ludo](https://www.debian-fr.org/u/Ludo)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/14 "2016-02-20T17:10:37Z")

</div>

Non, mais c’est une commande qui seras entrée dans un fichier de config donc à priori vu que c’est moi qui vais remplir le fichier, je ne pense pas me tromper, mais il est vrai que c’est une bonne idée 🙂

La il me reste à obliger les utilisateurs à rentrer un adresse ip valide, et je bloque au niveau du parsing.

Voila le travail de plus j’ai intégrer des fonctions et un appel à un autre script à été fusionné dans ce script. Il me reste pour que ce soit parfait à intégrer un mode ‘verbose’ pour virer tous ces ‘echo’ de variable, le parsing sur l’ip, le fait que l’ont entre pas 2 options comme tu me l’as siganlé.

[code]  
#! /bin/bash

#########################################################################################

# 

# Author: Ludo

# Date: 2008.01.11

# 

# This program is free software: you can redistribute it and/or modify

# it under the terms of the GNU General Public License as published by

# the Free Software Foundation, either version 3 of the License, or

# (at your option) any later version.

# 

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License

# along with this program. If not, see [http://www.gnu.org/licenses](http://www.gnu.org/licenses).

# 

#########################################################################################

PROGNAME="check\_AV\_update.sh"  
VERSION="1.0"  
AUTHOR="© 2008 Ludo"  
LASTCHANGE=“2008.02.22”

# EXIT CODE

STATE\_OK=0  
STATE\_WARNING=1  
STATE\_CRITICAL=2  
STATE\_UNKNOWN=3  
STATE\_DEPENDENT=4

# COMMANDS

CAT=/bin/cat  
GREP=/bin/grep  
CUT=/bin/cut  
SED=/bin/sed  
ECHO=/bin/echo  
LS=/bin/ls  
PATH\_TMP=/tmp  
SNMP=/usr/bin/snmpwalk

# HELP AND USAGE

print\_version() {  
$ECHO “”  
$ECHO “------------------------------------------------------------------------------------”  
$ECHO “$PROGNAME - V$VERSION, by $AUTHOR - Last Modification: $LASTCHANGE”  
$ECHO “------------------------------------------------------------------------------------”  
$ECHO “”  
}

print\_usage() {

$ECHO “”  
$ECHO “”  
$ECHO “Usage: $PROGNAME [-h|-V] | -C or --com= -H or --hostaddress=\<ip\_address\> -w \<warning\_value\> or --warning=\<warning\_value\> -c \<critical\_value\> or --critical=\<critical\_value\>”; $ECHO “”  
$ECHO " -h, --help"; $ECHO “print the help message and exit”  
$ECHO " -V"; $ECHO “print version and exit”  
$ECHO " -H | --hostaddress=_"; $ECHO “Host Address”  
$ECHO " -C | --com=_"; $ECHO “community name”  
$ECHO " -w n | --warning=n"; $ECHO “warning number of day for database age”  
$ECHO " -c n | --critical=n"; $ECHO “critical number of day for database age”  
$ECHO “”  
$ECHO “”  
}

print\_help() {  
print\_version  
$ECHO “”  
$ECHO “Plugin for Nagios to check the LNSNMP OID for AV datatbase age”  
$ECHO ""  
print\_usage  
$ECHO “”  
}

# Make sure the correct argument have been supplied

if [[! `$ECHO "$*" | $GREP -E "(-[hVwc]\>|--(help|com|hostaddress|warning|critical)=)"` ]]; then  
print\_usage  
exit $STATE\_UNKNOWN  
fi

# grab the command line arguments

thresh\_warn="“  
thresh\_crit=”“  
hostaddress=”“  
com=”"  
while test -n “$1”; do

```
    case "$1" in
            --help)
                    print_help
                    exit $STATE_OK
                    ;;
            -h)
                    print_help
                    exit $STATE_OK
                    ;;
            -V)
                    print_version
                    exit $STATE_OK
                    ;;
            --com=*)
                    com=`$ECHO $1 | $CUT -d= -f2`
                    ;;
            -C)
                    com=$2
                    shift
                    ;;
            --hostaddress=*)
                    hostaddress=`$ECHO $1 | $CUT -d= -f2`
                    ;;
            -H)
                    hostaddress=$2
                    #if [[`expr match "$hostaddress" '\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\)'` != $hostaddress ]] || [-z $hostaddress]; then
                    #$ECHO "This is not a valid address"
                    #exit $STATE_UNKNOWN
                    #fi
                    shift
                    ;;
            --warning=*)
                    thresh_warn=`$ECHO $1 | $CUT -d= -f2`
                     if [[`expr match "$thresh_warn" '\([0-9]*\)'` != $thresh_warn ]] || [-z $thresh_warn]; then
                    $ECHO "Warning value must be a number greater than zero"
                    exit $STATE_UNKNOWN
                    fi
                    ;;
            -w)
                    thresh_warn=$2
                    if [[`expr match "$thresh_warn" '\([0-9]*\)'` != $thresh_warn ]] || [-z $thresh_warn]; then
                    $ECHO "Warning value must be a number greater than zero"
                    exit $STATE_UNKNOWN
                    fi
                    shift
                    ;;
            --critical=*)
                    threshold=`$ECHO $1 | $CUT -d= -f2`
                    if [[`expr match "$thresh_warn" '\([0-9]*\)'` != $thresh_warn ]] || [-z $thresh_warn]; then
                    $ECHO "Criticale value must be a number greater than zero"
                    exit $STATE_UNKNOWN
                    fi
                    ;;
            -c)
                    thresh_crit=$2
                    if [[`expr match "$thresh_warn" '\([0-9]*\)'` != $thresh_warn ]] || [-z $thresh_warn]; then
                    $ECHO "Criticale value must be a number greater than zero"
                    exit $STATE_UNKNOWN
                    fi
                    shift
                    ;;
            *)
                    $ECHO "UNKNOW argument: $1"
                    print_usage
                    exit $STATE_UNKNOWN
                    ;;
    esac

```

shift  
done

#$ECHO ------------------------  
#$ECHO $hostaddress  
#$ECHO $com  
#$ECHO $thresh\_warn  
#$ECHO $thresh\_crit  
#$ECHO ------------------------

###########

# VARIABLES

###########

NOW=$(date +%c | $CUT -d\ -f1-5)  
NOTES\_MIBS=.1.3.6.1.4.1.334  
NOTES\_MIBS\_START=.1.3.6.1.4.1.334.72.1.1.3  
NOTES\_MIBS\_START\_NAME=NOTES-MIB::lnStatsCurrentTime.0  
NAME\_AGE=SAV.Current.Definitions.Age  
NAME\_DATE=SAV.Current.Definitions.Date

#########################################

# If the file not exist or not up to date

#########################################  
update\_file() {  
if [[$($CAT /tmp/tmp\_Nagios-$hostaddress-result.lnsnmp | grep $NOTES\_MIBS\_START\_NAME | $CUT -d\ -f4 ) != $($SNMP -v 2c -c $com $hostaddress $NOTES\_MIBS\_START | grep $NOTES\_MIBS\_START\_NAME | $CUT -d\ -f4)]]  
then  
$SNMP -v 2c -c $com $hostaddress .1.3.6.1.4.1.334 \> /tmp/tmp\_Nagios-$hostaddress-result.lnsnmp  
fi  
}

#####################

# Check if file exist

#####################

FILE=$($LS $PATH\_TMP/tmp\_Nagios-$hostaddress-result.lnsnmp)

if [[$FILE == “”]];  
then  
update\_file #hostname $hostaddress  
else verify\_date  
fi

# DEBUG

#$ECHO -------  
#$ECHO $FILE  
#$ECHO -------

# DEBUG

#####################

# assign value to VAR

#####################

DATE\_MIB\_FILE=$($CAT /tmp/tmp\_Nagios-$hostaddress-result.lnsnmp | grep $NOTES\_MIBS\_START\_NAME | $CUT -d\ -f4 )  
DATE\_MIB\_SNMP=$($SNMP -v 2c -c $com $hostaddress $NOTES\_MIBS\_START | $CUT -d\ -f4)

#$ECHO --------  
#$ECHO $DATE\_MIB\_FILE  
#$ECHO $DATE\_MIB\_SNMP  
#$ECHO --------

########################

# Verify the date of mib

########################

verify\_date(){  
if [[$DATE\_MIB\_FILE == “”]];  
then  
update\_file  
elif [[$DATE\_MIB\_FILE != $DATE\_MIB\_SNMP]];  
then  
update\_file  
fi  
}

##################################

# Assign Value to ask the good OID

##################################

SNMP\_DMAJ=$($CAT $PATH\_TMP/tmp\_Nagios-$hostaddress-result.lnsnmp | $GREP -i $NAME\_AGE | $CUT -d\ -f1)  
SNMP\_IMAJ=$($CAT $PATH\_TMP/tmp\_Nagios-$hostaddress-result.lnsnmp | $GREP -i $NAME\_DATE | $CUT -d\ -f1)  
DMAJ=$($SNMP -v 2c -c $com $hostaddress $SNMP\_DMAJ | $CUT -d\ -f6 | $CUT -d" -f1)  
IMAJ=$($SNMP -v 2c -c $com $hostaddress $SNMP\_IMAJ | $CUT -d\ -f6 | $CUT -d" -f1)

#$ECHO ------  
#$ECHO $DMAJ  
#$ECHO $SNMP\_DMAJ  
#$ECHO $IMAJ  
#$ECHO $SNMP\_IMAJ  
#$ECHO ------

#################################################################################

# check if the result is not null and verify the age of the Malaware/AV database.

#################################################################################

if [[$DMAJ \> $thresh\_warn]];  
then  
echo "$NOW :$($ECHO “The last update:” $IMAJ | $CUT -d= -f1-3) : WARNING"  
exit $STATE\_WARNING  
elif [[$DMAJ = “”]] ;  
then  
echo "$NOW : No response from this host"  
exit $STATE\_UNKNOWN  
elif [[$DMAJ \> $thresh\_crit]];  
then  
echo "$NOW :$($ECHO “The last update:” $IMAJ | $CUT -d= -f1-3) : CRITICAL"  
exit $STATE\_CRITICAL  
elif [[$DMAJ \< $thresh\_warn]];  
then  
echo "$NOW :$($ECHO “The last update:” $IMAJ | $CUT -d= -f1-3) : OK"  
exit $STATE\_OK  
fi  
#END[/code]

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-bash-community-name-vide-snmpwalk/12238/15 "2016-02-20T17:10:41Z")

</div>

```auto
Elle est un peu compliquée mais elle est relativement restrictive. L'adresse 10.23.1.1 passe mais pas 324.56.2.89 par exemple. Tu dois aussi pouvoir interdire le broadcast ou les adresses non routables sur internet si tu veut.
```

Elle est un peu compliquée mais elle est relativement restrictive. L’adresse 10.23.1.1 passe mais pas 324.56.2.89 par exemple. Tu dois aussi pouvoir interdire le broadcast ou les adresses non routables sur internet si tu veut.
