IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Une erreur dans un script


Sujet :

Linux

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par défaut Une erreur dans un script
    Bonsoir,

    Voilà, j'ai écrit un petit script pour envoyer et télécharger automatiquement un fichier sur un serveur Web mais... lorsque je l'exécute, cette erreur s'affiche :

    # sh pti_securite.sh
    pti_securite.sh[55]: [: Found: unexpected operator/operand
    pfctl: pf already enabled
    Naturelement, je vous communique aussi mon code (car sinon vous ne pourriez sans doute pas m'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #!/bin/sh
    # chargement des primitives
     
            fichier_pf_conf="pf.conf"
            adresse_ip_conf="http://192.168.20.2/bts/pti/securite/index.php"
            routeur_nb_conf="1"
     
    # dossier courrant
     
            cd /etc/
     
    # tests preliminaires
            # existance du fichier
            if [ ! -f $fichier_pf_conf ]
            then
                    echo "block all" > $fichier_pf_conf
            fi
     
            # ecriture sur le fichier
            if [ ! -w $fichier_pf_conf ]
            then
                    chmod a+w $fichier_pf_conf
            fi
     
    # comparaison de la version du fichier
     
            somme_controle=$( md5 $fichier_pf_conf )
            somme_controle=$( echo $somme_controle | cut -c 23-55 )
            reponse=$( lynx -dump $adresse_ip_conf"?numero_routeur="$routeur_nb_conf"&md5="$somme_controle )
     
    # comparaison des signatures
     
            #if [ echo $reponse | grep -qF "update" ]
            if [ $reponse = "update" ]
            then
     
            # telechargement de la derniere version du fichier
     
                    rm $fichier_pf_conf
                    cd /tmp/
                    rm *
                    wget $adresse_ip_conf"?numero_routeur="$routeur_nb_conf"&download=pf"
                    cd /etc/
                    mv /tmp/* /etc/$fichier_pf_conf
     
            # chargement du nouveau fichier
     
                    pfctl -f $fichier_pf_conf
            fi
     
    # activation (ou reactivation) de packet filter
     
            pfctl -e
    Donc en gros, je ne sais pas d'où vient mon erreur en fait. Si vous la voyez (ou si vous en avez trouvé plusieurs lol), j'apprécierais bcps que vous puissiez m'en informer : je suis un peu en ...galère lol
    Merci pour votre aide, et bonne soirée : codez bien ^_^!!

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    1/ As-tu les droits suffisants pour écrire dans le fichier :

    Car c'est bien ce que tu cherches à faire.

    Aprsè, mon shell a du mal avec ca, même si je ne pense pas que l'erreur vienne de là (mais du coup impossible de continuer) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            somme_controle=$(md5 $fichier_pf_conf)
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par défaut
    Chez moi la fonction md5 passe sans problème. Il faut dire qu'OpenBSD (l'OS sur lequel le script s'exécute) contient toute une gamme primitives cryptographique, ce qui facilite le travail.

    En fait, moi j'ai un blocage sur l'erreur retournée :
    pti_securite.sh[55]: [: Found: unexpected operator/operand
    Que signifie [55] ? Et je ne comprends absolument rien à [: Found: unexpected operator/operand aussi... 'fin c'est pas très clair je trouve.

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Dans mes scripts, je ne fais jamais de cd
    A quoi ça sert ? on peut mettre des chemins absolus et même stocker ces chemins dans des variables pour rendre la modification ultérieur du script plus facile.

    Quand dans mes if [...] j'ai des variables, je les mets systématiquement entre guillemets.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par défaut
    ne fais jamais de cd
    Ah bon. Je vais essayer sans. En fait je voulais les utiliser afin de bien cibler les dossiers dans lesquelles je travaille.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ $reponse = "update" ]
    C'était ça, la boulette
    Le test de l'égalité s'écrit comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ $reponse -eq "update" ]
    Longue vie aux communautés de développement open source.

  7. #7
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Citation Envoyé par tsing
    ne fais jamais de cd
    Ah bon. Je vais essayer sans. En fait je voulais les utiliser afin de bien cibler les dossiers dans lesquelles je travaille.
    Tu peux "cibler" tes répertoires sans cd.
    C'est typiquement la genre de ligne qui ne sert à rien dans un script.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par défaut
    Tu peux "cibler" tes répertoires sans cd
    Absolument. C'est vrai qu'on peut s'en passer, à condition de constamment répéter (parfois lourdement) toute l'arborescence dans laquelle on travaille.
    ligne qui ne sert à rien
    Peut-être, ou sinon ça évite de cibler constamment une même cible (ça aussi ça "ne sert à rien" ). En tout cas, je trouve que ça rend le script un peu plus lisible, en renseignant sur le répertoire courrant.

  9. #9
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Citation Envoyé par tsing
    Tu peux "cibler" tes répertoires sans cd
    Absolument. C'est vrai qu'on peut s'en passer, à condition de constamment répéter (parfois lourdement) toute l'arborescence dans laquelle on travaille.
    ligne qui ne sert à rien
    Peut-être, ou sinon ça évite de cibler constamment une même cible (ça aussi ça "ne sert à rien" ). En tout cas, je trouve que ça rend le script un peu plus lisible, en renseignant sur le répertoire courrant.
    Citation Envoyé par ggnore
    [...]et même stocker ces chemins dans des variables pour rendre la modification ultérieur du script plus facile[...]
    C'est d'expérience que j'ai appris à me méfier/passer des cd.

    Si tu regardes des scripts vraiment costauds faits par des pros, tu verras qu'il y a quasi systématiquement 3 tonnes de variables au début de leurs scripts... Dont tous les chemins appelés.
    C'est propre, c'est plus facile de maintenir le logiciel, c'est plus souple.

    Bonne continuation à toi.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par défaut
    Oui en effet, ça c'est encore mieux. J'y penserai lorsque mes scripts feront plusieurs ko

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Voyez vous une erreur dans mon script?
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/10/2009, 23h01
  2. [langage]erreur dans mon script
    Par Fabouney dans le forum Langage
    Réponses: 11
    Dernier message: 30/06/2005, 14h58
  3. Créer une table à partir d'une autre dans un script
    Par Dam)rpgheaven dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 24/06/2005, 10h55
  4. Comment lancer une erreur dans une procédure stockée
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/05/2005, 17h06
  5. [Apache] Erreur dans mes scripts CGI
    Par GLDavid dans le forum Apache
    Réponses: 2
    Dernier message: 28/08/2004, 06h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo