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 :

protéger une chaine de caratère en SHELL


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Par défaut protéger une chaine de caratère en SHELL
    bonjour,
    j'ai un problème d'insertion dans une base postgresql avec un script SHELL dont voici le code de la requette
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       echo "INSERT INTO bulkqueues (campaign,senddata,msisdn) VALUES ("$CAMPAIGN",'$CONTENT',$adrss)"|psql -t -A -U$DB_USERNAME $DB_NAME
    en fait le problème se pose au niveau de la variable $CONTENT: si elle contient un apostrophe ( ' ) la requette sera cassée. j'aimerais savoir s'il ya un moyen de protéger cette variable comme dans php par exemple (addslashes)

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var=bla
    echo 'cra '"$var"' ella'
    cra bla ella
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var=bla
    echo 'cra '"$var"' ella'
    cra bla ella
    ...
    ?
    et si var= bl'a
    quel serais le resultat?

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    En fait, je pensais à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    psql -t -A -U$DB_USERNAME $DB_NAME \
    -c 'INSERT INTO bulkqueues (campaign,senddata,msisdn) VALUES ("'"$CAMPAIGN"'","'"$CONTENT"'","'"$adrss"'")'
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lemahdois Voir le message
    bonjour,
    j'ai un problème d'insertion dans une base postgresql avec un script SHELL dont voici le code de la requette
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       echo "INSERT INTO bulkqueues (campaign,senddata,msisdn) VALUES ("$CAMPAIGN",'$CONTENT',$adrss)"|psql -t -A -U$DB_USERNAME $DB_NAME
    en fait le problème se pose au niveau de la variable $CONTENT: si elle contient un apostrophe ( ' ) la requette sera cassée. j'aimerais savoir s'il ya un moyen de protéger cette variable comme dans php par exemple (addslashes)
    La librairie psycopg2.extensions permettant d'attaquer Postgres avec Python possède une méthode QuotedString() faite pour ça. Désolé, en shell il n'y a rien.

    Donc t'as 3 méthodes
    1) tu vas voir sur le site de Postgres s'il n'y a pas un petit utilitaire déjà fait (en C ou autre) que tu peux intégrer dans ton shell...
    2) tu te fais ta propre fonction à base de "sed"
    3) tu fais appel à une routine Python laquelle utilisera cette méthode.

    Exemple d'utilisation avec Python
    >>> from psycopg2.extensions import *
    >>> a="Hello"
    >>>
    >>> s=QuotedString(a)
    >>> print s.getquoted()
    'Hello'
    >>>
    >>> a="c'est zoli"
    >>> s=QuotedString(a)
    >>> print s.getquoted()
    'c''est zoli'

    Mais te faut télécharger et installer psycopg2...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Sécurité] fonction protéger une chaine
    Par Halleck dans le forum Langage
    Réponses: 15
    Dernier message: 21/04/2008, 18h32
  2. décomposer une chaine de caratère
    Par sasaas dans le forum Langage
    Réponses: 1
    Dernier message: 18/02/2008, 10h02
  3. Compter une chaine de caratère dans une cellule.
    Par natcre dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/10/2007, 15h56
  4. [Tableaux] Décomposer une chaine de caratères
    Par bianconeri dans le forum Langage
    Réponses: 8
    Dernier message: 06/03/2006, 15h43
  5. Réponses: 1
    Dernier message: 08/03/2004, 11h35

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