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 :

Faire un script sur CentOS


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2013
    Messages : 6
    Par défaut Faire un script sur CentOS
    Bonjour.
    J'ai un petit soucis avec un script que j'essaye de mettre en place sur un serveur de partage de données qui tourne avec CentOS 6.
    J'ai testé ce script sur une distribution Debian 7, et il semble fonctionner correctement.
    Mais quand je le teste sur CentOS 6, j'ai un chapelet d'erreurs qui apparaissent.
    Déjà, il n'accepte pas les lignes vides de mon script ("command not found").
    Ensuite, la commande cd me retourne une erreur, la boucle while ne fonctionne pas et j'ai toujours une erreur de type "unexpected end of file".
    Voilà le programme :
    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
     
    #!/bin/bash
    # Creation des fichiers de sortie
    sortie="/home/NPC/dossier_administration/espace_total.csv"
     
    # Traitement du dossier partage
    echo "****---- DOSSIER PARTAGE ----****" > $sortie
    echo "NOM;TAILLE"
    DIR="/home/donnees/" 
     
    cd $DIR
    ls -d * | while read REPLY
    do
        echo $REPLY";"$(du -sh $REPLY | sed 's#'$REPLY'##') >> $sortie
    done
     
    echo "TOTAL;"$(du -sh /home/données) >> $sortie
     
    # Traitement des dossiers personnels
    echo "****---- DOSSIERS PERSONELS ----****" >> $sortie
    echo "NOM;TAILLE"
    DIR="/home/perso/" 
     
    cd $DIR
    ls -d * | while read REPLY
    do
        echo $REPLY";"$(du -sh $REPLY | sed 's#'$REPLY'##') >> $sortie
    done
     
    echo "TOTAL;"$(du -sh /home/perso) >> $sortie
    J'ai beau retourné le code dans tout les sens, je n'y parviens pas. Quelqu'un aurait-il une idée...?
    Peut-être est-ce un problème avec le gnome shell ?

  2. #2
    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.

    Pourrais-t'ont avoir la sortie d'erreur exacte du script ?

    Sinon, y-a un saut de ligne avec le shebang (#!/bin/bash) ?

    Autre remarque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -d * | while read REPLY
    La variable REPLY est automatiquement settée par la commande read en Bash et KSH. Et N_Bah te dirait, "pas de ls dans un script"

    => Quelques bonnes pratiques dans l'écriture de script en Bash - éviter la commande ls

    Cordialement,
    Idriss

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Bonjour,

    * est inutile (avec ls).
    la boucle while est inutile, et
    ON N'UTILISE PAS ls DANS UN SCRIPT !!!
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2013
    Messages : 6
    Par défaut
    Merci pour vos réponses.

    Je prends acte des erreurs et me lance de suite dans la modification.

    Cela dit, ça ne répond pas à mon interrogation: pourquoi ce script (malgré les erreurs ) fonctionne comme attendu sur Debian et pas sur CentOS.

    Voici le code modifié :
    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
    #!/bin/bash
    # Creation des fichiers de sortie
    sortie="/home/NPC/dossier_admin/espace_total.csv"
    # Traitement du dossier partage
    echo "****---- DOSSIER PARTAGE ----****" > $sortie
    echo "NOM;TAILLE" >> $sortie
    dossier="/home/donnees/" 
    cd $dossier
    for fichier in *
    do
        echo $fichier";"$(du -sh $fichier | sed 's#'$fichier'##') >> $sortie
    done
    echo "TOTAL;"$(du -sh /home/donnees | sed 's#/home/donnees##') >> $sortie
    # Traitement des dossiers personnels
    echo "****---- DOSSIERS PERSONELS ----****" >> $sortie
    echo "NOM;TAILLE" >> $sortie
    dossier="/home/perso/" 
    cd $dossier
    for fichier in *
    do
        echo $fichier";"$(du -sh $REPLY | sed 's#'$fichier'##') >> $sortie
    done
    echo "TOTAL;"$(du -sh /home/NPC | sed 's#/home/perso##') >> $sortie
    Les erreurs sur CentOS sont les suivantes :
    "command not found line 7" c'est la définition de la variable $dossier
    "No such file or directory: cd:" ça c'est inexplicable, même en remplaçant la variable $dossier par sa valeur, il me met la même erreur
    "Line 9: syntaxe error near unexpected token `do" ça je pense que c'est en rapport avec l'erreur du change directory

    Je continue à chercher, mais là j'avoue que je sèche un peu...

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Bonjour,

    Tu peux essayer un coup de dos2unix sur ton script puis essayer de le relancer pour voir s'il y a toujours des erreurs ?

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2013
    Messages : 6
    Par défaut
    Bien vu. ça fonctionne parfaitement.
    Quel bonheur si tout les postes de travail étaient sur Linux...

    Merci à tous pour vos conseils et réponses.

  7. #7
    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
    T'as le droit de sauter des lignes entre tes blocs hein (fin pas avant le shebang de préférence)

    Comme dit diserdogue, essayes un dos2unix et quand on édite ses scripts sous Windows, bien configurer son éditeur comme il faut (pour les retours à la ligne entre autres).

    EDIT : grilled

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

Discussions similaires

  1. [Magento] Action script sur l'image - Comment faire l'ajustement des images sous Magento?
    Par cuisina dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 20/03/2015, 18h14
  2. [C#] Faire un script sur C#
    Par saintjuste dans le forum Débuter
    Réponses: 2
    Dernier message: 18/04/2013, 14h13
  3. Faire fonctionner internet sur CentOS 5
    Par amAtunisian dans le forum Réseau
    Réponses: 12
    Dernier message: 30/12/2012, 17h53
  4. Je n'arrive pas à faire marcher le wifi sur CentOS 5
    Par totoAussi dans le forum RedHat / CentOS / Fedora
    Réponses: 2
    Dernier message: 16/03/2011, 10h16
  5. comment faire pour tourner un script sur un serveur et lequel?
    Par patchiko dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 20/07/2007, 16h00

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