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 :

Modification texte dans un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Inscrit en
    Août 2005
    Messages
    698
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 698
    Points : 252
    Points
    252
    Par défaut Modification texte dans un fichier
    [DEB],[2.4],[SH]

    Bonjour,

    Dans mon fichier sshd_config, je souhaite remplacer :
    #ListenAdress 0.0.0.0 par ListenAdress 1.1.1.1

    alors je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     sed "s/#ListenAddress 0.0.0.0/ListenAddress 1.1.1.1/" /etc/ssh/sshd_config
    Mais ça ne semble pas fonctionner, c'est comme si j'avais fait un cat du fichier sshd_config.

    Pouvez vous me dire ou se trouve mon erreur ?

    Merci à tous...
    Laurent

  2. #2
    Membre actif Avatar de brice45
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 188
    Points : 236
    Points
    236
    Par défaut
    salut
    essaie de rediriger ta commande sed dans un autre fichier et utilise /g comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed s/nom_a_changer/$nouvelle_valeur/g fichier_source > fichier_destination

  3. #3
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    il y a 1 ou 2 'd' à adress ?

    Fais attention parceque sed va te faire une sortie standard, c'est à dire qu'effectivement ça va uniquement apparaître à l'écran.

    Il faut que tu rediriges ta sortie vers le bon fichier (avec >)
    Seulement attention, il faut utiliser un fichier temporaire, sinon, tu auras un fichier en sortie tout vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fictmp=`mktemp XXXXXX`
    sed "s/#ListenAddress 0.0.0.0/ListenAddress 1.1.1.1/" /etc/ssh/sshd_config > $fictmp
    mv $fictmp /etc/ssh/sshd_config
    ça m'a l'air bizarre ce que tu fais ...

  4. #4
    Membre actif
    Inscrit en
    Août 2005
    Messages
    698
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 698
    Points : 252
    Points
    252
    Par défaut
    Effectivement il y a bien 2 'd' !

    Ok ça fonctionne, je croyais que sed écrivait directement dans le fichier, je n'avais pas compris qu'il fallait rediriger puis renommer.

    Par contre ggnore, pourquoi dis tu que c'est bizarre ?

    C'est un fichier de conf, que je souhaite modifier automatiquement.

  5. #5
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    ça me paraît un peu léger de modifier un fichier aussi important que celui qui gère l'authentification à distance via un script...
    J'ai un peu un fond parano.

    Si tu maîtrises, il n'y a aucun problème.
    bonne continuation.
    n'oublie pas le bouton résolu si ton problème est solutionné

  6. #6
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    sed -i "s/#ListenAddress 0.0.0.0/ListenAddress 1.1.1.1/" /etc/ssh/sshd_config

  7. #7
    Membre actif
    Inscrit en
    Août 2005
    Messages
    698
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 698
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    Comment fait-on si le texte a remplacer contient un "/", alors que la synthaxe de sed contient déjà des "/" ?

    Par ex:

    remplacer /usr/bin/texte a changer par /usr/bin/new texte


    Merci

    Laurent

  8. #8
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    il faut protéger les / avec des \

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Lapalissade : "pour utiliser autre chose que /, il suffit d'utiliser autre chose"

    Exemple :

    sed "s§#ListenAddress 0.0.0.0§ListenAddress 1.1.1.1§" fichier1 > fichier2

    Evidemment, il faut choisir un caractere qui ne se trouve pas dans tes parametres de substitution.

  10. #10
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Citation Envoyé par ggnore
    il faut protéger les / avec des \
    Protection à étendre aux espaces aussi et tout caractère spécial.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 24/02/2013, 10h56
  2. modification texte dans fichier
    Par Mick_Lisah dans le forum Langage
    Réponses: 1
    Dernier message: 08/03/2007, 08h54
  3. [langage] Remplacer du texte dans un fichier
    Par Michaël dans le forum Langage
    Réponses: 9
    Dernier message: 11/03/2005, 16h19
  4. Ajout de texte dans un fichier
    Par willowII dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 24/08/2004, 20h30
  5. [langage] Ecrire un bloc de texte dans un fichier
    Par sarahbes dans le forum Langage
    Réponses: 6
    Dernier message: 10/06/2004, 12h40

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