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 ...
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  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é
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  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 \
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  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.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  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.
    Grave urgent !!!

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

Discussions similaires

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

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