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

Shell et commandes GNU Discussion :

debian 6 et script bash, SH


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut debian 6 et script bash, SH
    bonjour a tous

    j'ai installé debian 6 et depuis je ne peux plus utiliser un script en bash depuis un fichier php

    le sh n'aime pas dans le code les > ou <<< ......

    donc comment pourriez vous m'interpréter

    ce code sans les < et >>>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    "ed -s  /home/".$fichier."  <<<$'g/Connection refused\|refused to talk to me/' >  /home/".$fichier."ANTI.txt"
    merci de votre aide !!

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    encore un truc codé à l'arrache et du coup non portable...
    ????

    peut etre utiliser les "\" de protection pour les caractères spéciaux.

  3. #3
    Membre du Club
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut
    Non pas à l'arrache mais bon le shell c'est pas mon fort....

    Faut juste comprendre comment on peut éviter les chevrons ...

    Voici l'erreur donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SH:Syntax error: redirection unexpected

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par fred___ Voir le message
    Voici l'erreur donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SH:Syntax error: redirection unexpected
    C'est bizarre, ce "SH" en majuscules!
    Je n'y connais pas grand-chose en PHP, mais Il faudrait comprendre quel est le shell lancé par php.
    Si tu veux rester dans l'utilisation de scripts depuis PHP, pour savoir quel shell est utilisé, tu peux essayer, par exemple, de lui faire exécuter quelque chose comme ps -ef | fgrep $$.

    Ce n'est peut-être pas le bon shell, je veux dire, pas un vrai bash.
    C'est peut-être configurable dans PHP.
    Peut-être ton système précédent avait un lien /bin/sh -> /bin/bash.
    Peut-être que tu peux mettre ta commande dans un script avec le bon shebang que tu passes à PHP.
    Peut-être d'autres peut-être...
    )jack(

  5. #5
    Membre du Club
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut
    salut jack

    Voici ce que je recup !

    coco=>debian6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    root@coco:~# ps -ef | fgrep $$
    root      4310  3565  9 11:06 pts/1    00:00:00 -bash
    root      4375  4310  0 11:06 pts/1    00:00:00 ps -ef
    root      4376  4310  0 11:06 pts/1    00:00:00 fgrep 4310
    coco2 => plesk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    coco2:~# ps -ef | fgrep $$
    root     24213 24190  0 11:09 pts/0    00:00:00 -bash
    root     24217 24213  0 11:09 pts/0    00:00:00 ps -ef
    root     24218 24213  0 11:09 pts/0    00:00:00 -bash
    Après ce que ça veut dire ...........

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Alors là il s'agit de l'utilisateur root avec lequel tu te connecte en SSH, ce n'est probablement pas le même utilisateur avec lequel le script PHP est exécuté.

    PHP comme Perl ou autre langage de programmation exécute les commandes systèmes dans le shell de l'utilisateur courant. J'imagine que PHP est ici utilisé en mode web via un serveur HTTP tel que apache.

    Si c'est bien le cas, c'est le shell de l'utilisateur d'apache qu'il faut observer (www-data) :

    Chez moi (Ubuntu 12.04) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [root@hp-dv6:~]# su - www-data
    $ echo $SHELL
    /bin/sh
    Cependant sous mon Ubuntu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [root@hp-dv6:~]# ls -la /bin/sh
    lrwxrwxrwx 1 root root 9 juin   3 21:47 /bin/sh -> /bin/bash
    Essayes de reproduire ces commandes chez toi et dit nous ce que cela donnes.

    Cordialement,
    Idriss

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par fred___ Voir le message
    salut jack

    Voici ce que je recup !

    coco=>debian6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    root@coco:~# ps -ef | fgrep $$
    root      4310  3565  9 11:06 pts/1    00:00:00 -bash
    root      4375  4310  0 11:06 pts/1    00:00:00 ps -ef
    root      4376  4310  0 11:06 pts/1    00:00:00 fgrep 4310
    coco2 => plesk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    coco2:~# ps -ef | fgrep $$
    root     24213 24190  0 11:09 pts/0    00:00:00 -bash
    root     24217 24213  0 11:09 pts/0    00:00:00 ps -ef
    root     24218 24213  0 11:09 pts/0    00:00:00 -bash
    Après ce que ça veut dire ...........
    ça veut dire que TON shell est un bash, mais ça ne répond pas à la question!
    J'ai précisé (mais peut-être pas suffisamment précisément) "lui faire exécuter"!
    Sous-entendu à PHP! Il fallait lui passer la commande "ps -ef" pour voir ce que dit le process lancé par PHP.
    Sinon, comme d'hab, le sh aliasé à dash, c'est pas cool...
    Bon, allez, c'est résolu...

  8. #8
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Je ne vois d'ailleurs vraiment pas l'intérêt de passer par une commande externe pour faire ça dans un script PHP ...

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/usr/bin/php
    <?php
            $path_file = "...";
            $file = fopen ($path_file, "r");
     
            $content = "";
            while (!feof($file)){
                    $line = fgets($file);
                    if (preg_match("/Connection refused|refused to talk to me/", $line)){
                            $content .= $line;
                    }
            }
     
            file_put_contents ($path_file . "ANTI.txt", $content);
    ?>

    Et y-a sûrement des façons plus simples de le faire ... quoiqu'il en soit faut éviter de passer par des commandes externes dans un programme autant que possible.

    Si tu tiens absolument à passer par une commande shell, un simple grep fera l'affaire ...

    Cordialement,
    Idriss

  9. #9
    Membre du Club
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut
    oui pourquoi pas en effet direct en php ...

    par contre le grep j'aimerais savoir ce que pourrait donner la commande exact si possible

    merci

  10. #10
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Avec grep/egrep :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    grep -E "Connection refused|refused to talk to me" fichier_entree > fichier_sortie
    # ou
    egrep "Connection refused|refused to talk to me" fichier_entree > fichier_sortie
    Par contre, encore une fois, c'est largement préférable de le faire en PHP pour ton script.

    Cordialement,
    Idriss

  11. #11
    Membre du Club
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut
    merci pour l'info !

    par contre le truc au depart c'est d'eviter les chevrons...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    egrep "Connection refused|refused to talk to me" fichier_entree > fichier_sortie

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

Discussions similaires

  1. Requête POST dans un script bash
    Par desperado dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 22h38
  2. Réponses: 21
    Dernier message: 29/09/2005, 19h33
  3. Script bash : Pb avec sed
    Par fred64 dans le forum Linux
    Réponses: 3
    Dernier message: 19/08/2005, 11h24
  4. Scripts bash : requêtes sql
    Par milka dans le forum Linux
    Réponses: 3
    Dernier message: 17/08/2005, 10h59
  5. Problème script Bash
    Par Sphost dans le forum Linux
    Réponses: 10
    Dernier message: 26/07/2005, 09h56

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