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 POSIX Discussion :

Redirection echo ou print en premiere ligne d'un fichier existant


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut Redirection echo ou print en premiere ligne d'un fichier existant
    Bonjour,

    Suite à la mise en place de la sécurité sur des serveur UNIX AIX,
    Je me suis posé une question, et j'avoue que je sèche :

    Comment je peux rediriger un echo ou un print en première ligne dans un fichier existant, sans pour autant faire du bidouillage.

    Exemple :
    Dans /etc/profile, je souhaite, mettre la commande : trap 1 2 3

    donc echo "trap 1 2 3" >> /etc/profile

    mais cette redirection va me mettre cette commande en fin de fichier.

    Pour éviter de faire du bidouillage comme suit ou de prendre la commande "ed"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # ls -l /etc/profile
    # -rw-r--r--    1 root     system         1675 Aug 18 2009  /etc/profile
    Regarder les droits (644) et les propriétés (root:system)
    NB : ici je prend le fichier /etc/profile mais cela peut être un autre fichier avec avec des droits et des propriétés différentes
    Je vois déjà des réponses me disant que ce sera toujours les même droits et propriétés donc pas de vérification a faire systématiquement

    Puis exécuter les commandes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # cp -p  /etc/profile.ori
    # echo "trap 1 2 3" > /etc/profile
    # chmod 644 /etc/profile
    # chown /etc/profile
    # cat /etc/profile.ori >> /etc/profile
    Merci d'avance de vos réponses

  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,

    Je vois déjà des réponses me disant que ce sera toujours les même droits et propriétés donc pas de vérification a faire systématiquement
    Si tu ne fais que modifier le contenu du fichier, ni les droits ni le proprietaire ne seront modifiés. Appeler chown et chmod est donc completement inutile dans ce cas.

    Ce qui te ferait donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cp file file_origine
    echo "Nouvelle chaine" > file
    cat file_origine >> file
    Sinon, effectivement, sed ou vi doivent te permettre de faire la meme chose, mais tu ne souhaites visiblement pas les utiliser ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut Oui tu as raison
    Hello,

    Oui je ne désir pas utiliser le vi et le sed; j'explique pourquoi
    le vi car je dois le faire sur plus de 150 machine donc vi impossible
    le sed ne me permets que de changer une ligne le ed impossible dans une boucle ssh avec du sudo (ou alors je ne connais pas (ça c'est plus que possible lol )

    Mais je lance ta commande avec une boucle for comme ceci et je te dis ce que cela me fais comme résultat mais c'est "du bidouillage je trouve !!!
    sans être un puriste, mais si ça fonctionne et bien je fais faire ça mais dans un script c'est euh!!! disons le pas trés joli

    du style (ça c'est pour ceux qui aimes les commandes

    for SRV in $(cat mes_serveurs.txt)
    do
    ssh $SRV "PATH=\$PATH:/usr/local/bin" "sudo su \"-c cp -p mon_fichier mon_fichier.ori ; echo toto > mon_fichier ; cat mon_fichier.ori >> mon_fichier \" "
    done



    Ca a fonctionné, mais j'avoue que c'est pas beau ... mdr, mais ça marche
    Merci

    NB : pour la variable PATH la version du sudo n'est pas la même pour tous les serveurs et la sécurité ne souhaite pas mettre /usr/local dans le PATH par défaut des serveurs

    Cordialement

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Un peu plus simple avec Gnu sed (gsed ici):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for srv in $(<mes_serveurs.txt)
    do
       ssh $srv "PATH=\$PATH:/usr/local/bin" "sudo su \"-c gsed -i '1itoto' mon_fichier\" "
    done

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut Pas GSED sous AIX
    Bonjour,

    Suite a ta réponse' il est vrai que ça marche sous mes linux avec gsed mais pour mes serveurs sous AIX il n'y a pas de GNU sed.

    Malgré la portabilité de certains binaires gnu sous AIX par IBM.
    (Mais je n'ai pas regardé chez Bull ;-7 )

    Merci encore

    Stef

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695

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

Discussions similaires

  1. Afficher les n premières lignes d'un fichier
    Par aline dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 25/09/2006, 11h44
  2. lire premiere ligne d un fichier
    Par lathiolle dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2006, 16h33
  3. [CSV] Ne lire que la premiere ligne d'un fichier CSV
    Par passie dans le forum Langage
    Réponses: 7
    Dernier message: 05/07/2006, 13h02
  4. comment effacer la premiere ligne dans un fichier
    Par aliosys dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 29/12/2005, 11h14
  5. Supprimer la premiere ligne d'un fichier
    Par Kahiba dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2003, 11h18

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