Partage
  • Partager sur Facebook
  • Partager sur Twitter

Script pour vérifier si serveur web est actif

    14 juillet 2022 à 18:50:51

    Bonjour, 

    Je suis débutant en programmation shell. L'objectif de mon exercice est de vérifier si le serveur web n'est pas actif. 
    Mon code génère une erreur et je ne sais pas comment résoudre.

    function checkServer(){
      
      ping -c1 -t "ipServer" 2>/dev/null
      
      if["$?" != 0]; then
         echo "Serveur inactif"
      fi
    }
    
    checkServer

    Erreur affichée : Ligne 13 : [ 1: commande introuvable

    • Partager sur Facebook
    • Partager sur Twitter
      14 juillet 2022 à 18:57:40

      Bash est très sensible aux espaces. Il en faut un entre if et [ et aussi à l'intérieur. Mais en bash, if (($?)); then sera mieux pour l;es calculs arithmétiques.

      • Partager sur Facebook
      • Partager sur Twitter
        14 juillet 2022 à 20:35:55

        l'option -t attend un argument numérique !
        sais-tu à quoi elle sert ?

        tous les serveurs ne répondent pas aux pings, c'est même une mesure de sécurité.
        il vaut mieux utiliser netcat

        function et () sont redondants (c'est l'un ou l'autre), ce n'est pas une erreur, c'est simplement inutile.

        $? étant forcément un nombre, les guillemets sont inutiles.

        la syntaxe de if, c'est

        if COMMANDES; then COMMANDES; [ elif COMMANDES; then COMMANDES; ]... [ else COMMANDES; ] fi

        donc, on peut simplifier ton script :

        if ping -c 1 "$ipServer" &>/dev/null
        then
            echo serveur OK
        fi

        et encore simplifier :

        ping -c 1 "$ipServer" &>/dev/null && echo "serveur OK"

        mais, comme je l'ai déjà dit : il vaut mieux utiliser netcat


        EDIT : j'en ai oublié une : != est un opérateur lexical : il compare des chaînes.
        les nombres peuvent être des chaînes, mais quand ce sont des nombres, il vaut mieux utiliser un opérateur arithmétique : -lt -le -eq -ne -ge -gt

        -
        Edité par dantonq 14 juillet 2022 à 22:13:40

        • Partager sur Facebook
        • Partager sur Twitter

        "Un problème clairement exposé est à moitié résolu." ·· Pas de questions techniques en MP.

          14 juillet 2022 à 23:18:09

          Avec les espaces, je n'ai pas d'erreur mais je pense que le résultat n'est pas le bon. Quand je fais un ping sur le 8.8.8.8, j'ai "Serveur inactif".

          -
          Edité par Le Kara 15 juillet 2022 à 10:38:30

          • Partager sur Facebook
          • Partager sur Twitter
            15 juillet 2022 à 9:55:18

            Le Kara a écrit:

            C'était ça : le problème d'espace.

            Bonjour,

            Sujet résolu

            Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)

            • Partager sur Facebook
            • Partager sur Twitter
              15 juillet 2022 à 17:44:52

              Le Kara a écrit:

              Avec les espaces, je n'ai pas d'erreur mais je pense que le résultat n'est pas le bon. Quand je fais un ping sur le 8.8.8.8, j'ai "Serveur inactif".


              tu as fait des modifications dans ton script ?
              alors, il faut nous montrer la nouvelle version, sinon, pour voir ce que fait la commande ping, enlève la redirection et dis-nous ce qu'affiche le terminal.
              • Partager sur Facebook
              • Partager sur Twitter

              "Un problème clairement exposé est à moitié résolu." ·· Pas de questions techniques en MP.

                15 juillet 2022 à 19:18:44

                function checkServerWeb()
                {
                   ping -c -t '8.8.8.8' 2>/dev/null
                   if[ "$1" -gt 0 ]; then
                      echo "Serveur tombé"
                    fi
                }
                 Après, comme je l'ai dis, j'ai toujours le même message : Serveur tombé. 
                Donc je regarde.

                • Partager sur Facebook
                • Partager sur Twitter
                  15 juillet 2022 à 20:05:47

                  j'ai dit que l'option -t attend un paramètre numérique. S'il n'y en a pas la commande échoue, et donc l'état final de la commande est en erreur.

                  j'ai dit d'enlever la redirection pour qu'on voit les messages d'erreurs de la commande.

                  j'ai dit bien d'autres choses concernant ton script.

                  ;)

                  PS : il faut un espace entre if et [ ça, c'est pas moi qui l'ai dit. XD

                  • Partager sur Facebook
                  • Partager sur Twitter

                  "Un problème clairement exposé est à moitié résolu." ·· Pas de questions techniques en MP.

                    15 juillet 2022 à 21:08:00

                    OK Dantonq

                    function checkServerWeb()
                    {
                      ping -c '8.8.8.8'
                      if[ "$1" -gt 0]; then
                       echo "Serveur tombé"
                      fi
                    }
                    Avec ce résultat, il est évident que ma condition est incorrecte.
                    Résultat
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 juillet 2022 à 21:58:50

                      if[ "$1" -gt 0]; then

                      pourquoi $1 ?

                      if [ $? -gt 0 ]; then

                      et il manque encore des espaces : tunepeuxprobablementpaslirecorrectementcettephrase,etleshellaussiabesoind'espacespouridentifierlesmots. ;)

                      #!/bin/sh
                      
                      ip='8.8.8.8'
                      service=443
                      netcat -z -w2 "$ip" "$service" && statut='OK' || statut='KO'
                      echo "serveur $ip : $statut"



                      -
                      Edité par dantonq 15 juillet 2022 à 22:00:28

                      • Partager sur Facebook
                      • Partager sur Twitter

                      "Un problème clairement exposé est à moitié résolu." ·· Pas de questions techniques en MP.

                        16 juillet 2022 à 0:01:48

                        Dantonq, ça marche. Merci

                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 juillet 2022 à 0:00:01

                          Dantonq, je suis encore de retour. J'ai encore deux fonctions. L'un affiche un message quand le disque est plein et l'autre affiche l'espace occupé par les processus en mémoire en Mo.

                          1ère fonction

                          Function checkSpaceDisk()
                          
                          { 
                          #Extraction du nom des disques installés
                          for DISK in $(df -x tmpfs  -x devtmpfs |grep dev |awk -F ‘’ ‘’ ‘{ print $1}’ |cut -d/ -f 3)
                          
                          Do
                             #Espace disque utilisé
                             espaceUtilise=$(df |grep grep -w « $DISM » |awk -F '' '' ‘{ print $5}’)
                          
                             #Espace disque total. Valeur retournée à la caractère G à la fin donc j'extrais les chiffres
                             espaceTotal=$(df -x tmpfs  -x devtmpfs |grep dev |awk -F '' '' ‘{ print $2}’) |grep '-o [[:digit:]])
                           if [[ '' $espaceUtilise '' -eq  '' espaceTotal '' ]]; then
                           	Echo « Le disque $DISK est plein »
                          
                          Fi
                          
                          done
                          
                          }


                          Message d'erreur 

                          512 : nombre entier attendu comme expression

                          Fonction 2


                          La fonction 2 
                          A pour objectif d'extraire la quantité de mémoire occupée et à l'affiché en méga octet.


                          Function checkSpaceDisk()
                          { 
                             #Récupération de la mémoire totale
                             totalMemoire=sudo cat /proc/meminfo |grep MemTotal
                             #Liste de tous les processus avec tri
                             listeProcessus=ps -eo pid, %mem --sort=-%mem
                             #à partir de là, je n'avance plus. L'objectif c'est de parcourir la liste des processus et la quantité 
                             #extrait ces deux colonnes, convertir la quantité % en méga Octet avec l'opération
                             #taille="$processusEnCours" * "$totalMemoire
                          }




                          -
                          Edité par Le Kara 19 juillet 2022 à 0:02:15

                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 juillet 2022 à 16:26:57

                            s'il te plaît,

                            autre sujet -> autre discussion.

                            merci.

                            EDIT : corrigé par le kara, avant mon intervention.

                            -
                            Edité par dantonq 19 juillet 2022 à 16:44:25

                            • Partager sur Facebook
                            • Partager sur Twitter

                            "Un problème clairement exposé est à moitié résolu." ·· Pas de questions techniques en MP.

                            Script pour vérifier si serveur web est actif

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            • Editeur
                            • Markdown