Je suis un débutant en script bash, je veux créer un script bash pour installer, installer et configurer des trucs sur ma boîte Linux de manière automatisée.
Supposons que je veuille éditer
/etc/yum.repos.d/epel.repo
par le script bash
Ce que je veux faire, c'est comme suit
- Ouvrir le fichier /etc/yum.repos.d/epel.repo
- Rechercher la section [epel]
- Ajouter une priorité de ligne = 10 juste après la ligne activée = 1 dans la section epel
Pour la première partie, j'ai ajouté
yum install nano
nano /etc/yum.repos.d/epel.repo
Ma question est de savoir comment faire les 2 et 3ème parties avec le script bash en utilisant nano (si possible, dans le cas où ce n'est pas possible, montrez-moi avec sed)
À certains moments, je devrai également modifier des variables dans des fichiers, par exemple
- activer = 0 pour activer = 1
- Testing = "1" to Testing = "0"
- Ajoutez du texte sur une ligne. fonctions = à fonction = "texte1", "texte2"
- Ajoutez du texte à un fichier et enregistrez-le (avec nano)
Je sais que c'est exigeant mais j'ai besoin de créer cela pour un ami qui est un noob à la gestion de serveurs.Malheureusement, je n'ai pas le temps d'étudier le script bash dès le début de mes examens, j'utiliserai vos exemples pour écrire le script.
Merci les gars pour toutes les réponses que j'ai faites avec succès la plupart du script bash
Cependant, j'ai un autre problème Supposons que je souhaite modifier nginx.conf à l'aide de sed Nous traiterons avec worker_processes
Maintenant, je veux utiliser sed pour faire ce qui suit 1. Trouvez la PREMIÈRE occurrence de worker_processes
dans cette conf et remplacez le texte parworker_processes 4;
Note spéciale ici: Ceci est juste un exemple. Il peut arriver que la conf contienne les processus de travail 1; . C'est une partie difficile. Je veux une commande sed qui trouve la casse de correspondance FIRST wHOLE du mot worker_processes , supprime la ligne de texte où le mot est trouvé et et worker_processes 4;
y colle puis enregistre le fichier. C'est la méthode la plus fiable que je connaisse lors de la modification de fichiers (sans risque de rompre toute conf
Une dernière suggestion, j'ai utilisé sed -i 's / enabled = 0 / enabled = 1 / g' /etc/yum.repos.d/remi.repo pour changer enabled = 0 à enabled = 1 dans la section [remi] dans remi .repo .Cependant, j'ai le sentiment qu'il peut modifier tous les activé = 0 dans ce fichier, ce qui va détruire le serveur. Quelqu'un peut-il suggérer un meilleur code.
Autre chose dont je ne suis pas sûr: PI veut éditer un fichier qui a ceci comme Text Testing = "0" (Oui, il a des guillemets et je dois le garder) Il devrait être modifié de Testing = "0" à Testing = " 1 "(avec guillemets)
J'ai aussi besoin d'ajouter du texte avec des guillemets à la fin d'un fichier avec sed Comme "Merci Quanta" (avec guillemet) Pour php vous mettez un \ avec des guillemets en écho, je ne sais pas comment c'est fait pour bash
Une autre chose dont
j'ai besoin pour modifier une ligne dans une conf mais je ne me souviens pas quel est l'ensemble du texte à remplacer
Comme son écoute = quelque chose; , je veux le modifier pour écouter = /tmp/php5-fpm.sock;
Bravo pour les quanta
Merci pour le soutien formidable
-i
n'est pas une option standard poursed
.ed
, cependant, offre un moyen conforme aux normes de modifier des fichiers avec une syntaxe très similaire à celle de sed.Comme l'a dit ptman, Augeas peut vous éviter d'utiliser
sed
/awk
:définira la priorité du
epel
référentiel sur 10. Si lapriority
clé existe déjà, elle définira sa valeur, sinon elle ajoutera unepriority
entrée après la dernière entrée de la section.Il en va de même pour les autres valeurs que vous souhaiterez peut-être modifier.
Si vous souhaitez modifier plusieurs valeurs, vous pouvez même utiliser
augtool
comme interprète:Si vous souhaitez le conserver dans votre script bash, vous pouvez diriger les commandes vers
augtool
:Voir
man augtool
pour plus d'options.Il y a plusieurs avantages à utiliser Augeas vs
sed
/awk
:yum.repo
syntaxe). Vous ne prendrez pas le risque de casser la syntaxe du fichier si vos expressions rationnelles sont erronées;yum.repo
sections, vous savez donc que vous éditez la bonne section;la source
Vous voudrez peut-être également consulter Augeas , un outil pour modifier par programme les fichiers de configuration. Il est très puissant en combinaison avec Puppet (un système de gestion de configuration), mais peut également être utilisé seul.
la source