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 :

Un script qui copie en fonction du nom de l'OS/release


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 54
    Par défaut Un script qui copie en fonction du nom de l'OS/release
    Bonsoir,

    J'ai un un fichier contenant une liste de hostnames de plusieurs OS et versions majeures : RedHat "4", RedHat "5", Solaris "8", Solaris "10", Fedora "12", Fedora "13" (je mets entre guillement la version majeure, car elle est très importante !). Pour chacun de ces hostnames, je veux déterminer le nom de l'OS et sa version majeure. Et en fonction de cela, copier des fichiers dans un répertoire sur la machine en question en écrasant ceux qui étaient là (je fais tout de même une sauvegarde de secours avant, on ne sait jamais !).

    Quelqu'un aurait-il la gentilesse de m'aider pour mettre en place ce script ?

    Il se peut que ce soit ridiculement facile à faire, mais je suis toujours un grand débutant, merci de ne pas m'en vouloir....

    En vous remerciant d'avance.

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

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

    Pour les distributions linux, lsb-release devrait t'aider.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 54
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    Pour les distributions linux, lsb-release devrait t'aider.
    Sur RedHat, il ne connait pas!! Sinon, je vois à peu près comment trouver le nom de l'OS (ça marche pour tous les OS) :
    et sa release (par ex. pour redhat)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat /etc/redhat-release | awk '{print $7}'
    Mon problème c'est, une fois tout ceci trouvé, comment le construire dans un script qui marche. Je me perds encore lorsqu'il y a des tests qui, suivant le résultat obtenu, on doit déclancher une action.
    Tiens, j'ai pensé à construire mon scipt autour d'un "case", mais comment mettre les chose en musique ? C'est encore un de mes problèmes et ça m'énerve...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    oui, case est une bonne option.

    NB: awk '{print $7}' /etc/redhat-release ¡attention aux uuoc!
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 54
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    oui, case est une bonne option.

    NB: awk '{print $7}' /etc/redhat-release ¡attention aux uuoc!
    Merci pour la correction. Et voici un début avec "case", est-il possible d'avoir votre aide pour compléter ?


    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
    #!/bin/sh
     
    VAR=$(uname -s)
     
    case $VAR in
           Linux)
    	        REL=$(awk '{print $5}' /etc/redhat-release)
                    if [$REL="ES"] 
    		then    
    		        mv  /usr/local/bin/pinos /usr/local/bin/pinos-rh4.old
    			cp /home/oracle/pinos-rh4 /usr/local/bin/pinos
    		else
    			mv  /usr/local/bin/pinos /usr/local/bin/pinos-rh5.old
    			cp /home/oracle/pinos-rh5 /usr/local/bin/pinos 
    		fi
           ;;
     
          SunOS)
    	    REL=$(uname -r)
                if [$REL="5.8"] 
    	    then    
    		    mv  /usr/local/bin/pinos /usr/local/bin/pinos-sol8.old
    	            cp /export/home/oracle/pinos-sol8 /usr/local/bin/pinos
                else
    		    mv  /usr/local/bin/pinos /usr/local/bin/pinos-sol10.old
    		    cp /export/home/oracle/pinos-sol10 /usr/local/bin/pinos 
    	    fi
          ;;
     
          *) 
    	            echo "l'OS n'est ni un Linux ni un SunOS"
          ;;
     
    esac

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    en y regardant de plus près, je me dis qu'à un moment il va falloir que tu te connectes aux machines décrites dans maListeServeurs.txt...

    et je me rends compte que ta description n'est pas assez précise; il faudrait, avant d'attaquer le script, que tu aies dressé le plan détaillé des actions à effectuer (quoi faire, sur quelle machine, ...), et ensuite transcrire cela en langage de programmation.

    NB: indente scrupuleusement tes scripts (les commandes qui ouvrent, et qui ferment une commande composée doivent être sur la même colonne), dans le cas de conditions/case nombreu(x/se) la relecture, et la correction seront plus aisées.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/04/2014, 16h22
  2. Script shell copie fichier en fonction de leur nom
    Par Borowsky dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 09/12/2009, 09h27
  3. Réponses: 15
    Dernier message: 29/11/2008, 11h56
  4. Script qui créé plusieurs fonctions
    Par the java lover dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/06/2008, 14h10
  5. Réponses: 6
    Dernier message: 16/01/2006, 15h24

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