Ich bin ein Anfänger im Bash-Scripting. Ich möchte ein Bash-Script erstellen, um die Installation und Konfiguration von Inhalten auf meiner Linux-Box auf automatisierte Weise durchzuführen.
Angenommen, ich möchte bearbeiten
/etc/yum.repos.d/epel.repo
durch das Bash-Skript
Was ich tun möchte, ist wie folgt
- Öffnen Sie die Datei /etc/yum.repos.d/epel.repo
- Suchen Sie den Abschnitt [epel]
- Fügen Sie eine Zeilenpriorität = 10 direkt nach Zeile aktiviert = 1 im Epel-Abschnitt hinzu
Für den ersten Teil habe ich hinzugefügt
yum install nano
nano /etc/yum.repos.d/epel.repo
Meine Frage ist, wie man den 2. und 3. Teil mit bash script mit nano macht (wenn möglich, falls nicht möglich, zeig es mir mit sed)
An einigen Stellen muss ich auch Variablen in Dateien ändern
- enable = 0, um = 1 zu aktivieren
- Testen = "1" bis Testen = "0"
- Fügen Sie Text in eine Zeile ein. functions = to function = "text1", "text2"
- Füge Text zu einer Datei hinzu und speichere sie (mit Nano)
Ich weiß, dass es anstrengend ist, aber ich muss es für einen Freund erstellen, der sich nicht mit Servermanagement auskennt.
Jungs, danke für all die Antworten, die ich im Bash-Skript größtenteils erfolgreich gemacht habe
Allerdings habe ich ein anderes Problem Lets i sed ändern annehmen wollen nginx.conf nutzen wir mit worker_processes befassen wird
nun möchte ich den Einsatz sed folgendes 1.Suchen das zu tun , das erste Vorkommen von worker_processes
in dieser conf und Ersetzen von Text mitworker_processes 4;
Besonderer Hinweis: Dies ist nur ein Beispiel. Es kann vorkommen, dass die conf worker_processes 1 enthält; . Das ist ein schwieriger Teil. Ich möchte einen sed-Befehl, der den ersten wHOLE-Übereinstimmungsfall des Wortes worker_processes findet , lösche die Textzeile, in der das Wort gefunden wird, und füge sieworker_processes 4;
dort ein und speichere die Datei. Dies ist jedoch die zuverlässigste Methode beim Bearbeiten von Dateien (ohne das Risiko, dass eine Konf. Beschädigt wird)
Ein letzter Vorschlag Ich habe sed -is / enabled = 0 / enabled = 1 / g '/etc/yum.repos.d/remi.repo verwendet, um enabled = 0 in enabled = 1 im Abschnitt [remi] in remi zu ändern .repo .Jedoch habe ich das Gefühl, dass es alle aktivierten = 0 in dieser Datei ändern kann, was den Server beschädigen wird. Kann jemand einen besseren Code vorschlagen.
Ein anderes Zeug, dessen ich mir nicht sicher bin: PI möchte eine Datei bearbeiten, die dies als Text Testing = "0" hat (Ja, es hat Anführungszeichen und ich muss es behalten). Es sollte von Testing = "0" zu Testing = "geändert werden. 1 "(mit Anführungszeichen)
Außerdem muss ich Text mit Anführungszeichen am Ende einer Datei mit sed einfügen. Wie "Thanks Quanta" (mit Anführungszeichen) Für PHP setzen Sie ein \ mit echo-Anführungszeichen, wissen nicht, wie es für bash gemacht wird
Eine andere Sache, die
ich muss, um eine Zeile in einem Conf zu ändern, aber ich erinnere mich nicht, was der gesamte zu ersetzende Text ist
Wie sein Zuhören = etwas; , ich möchte es ändern, um zu hören = /tmp/php5-fpm.sock;
Daumen hoch für Quanten
Vielen Dank für die großartige Unterstützung
-i
ist keine Standardoption fürsed
.ed
Es bietet jedoch eine standardkonforme Möglichkeit, Dateien mit einer Syntax zu bearbeiten, die der von sed sehr ähnlich ist.Wie ptman sagte, kann Augeas Sie vor der Verwendung von
sed
/ rettenawk
:setzt die Priorität des
epel
Repositorys auf 10. Wenn derpriority
Schlüssel bereits vorhanden ist, wird sein Wert festgelegt, andernfalls wird einpriority
Eintrag nach dem letzten Eintrag im Abschnitt hinzugefügt .Gleiches gilt für andere Werte, die Sie möglicherweise ändern möchten.
Wenn Sie mehrere Werte ändern möchten, können Sie diese sogar
augtool
als Interpreter verwenden:Wenn Sie es in Ihrem Bash-Skript behalten möchten, können Sie die Befehle weiterleiten an
augtool
:Siehe
man augtool
für weitere Optionen.Augeas vs
sed
/ bietet mehrere Vorteileawk
:yum.repo
Syntax) kennen. Sie gehen nicht das Risiko ein, die Dateisyntax zu brechen, wenn Ihre Regex falsch ist.yum.repo
Abschnitte, sodass Sie wissen, dass Sie den richtigen Abschnitt bearbeiten.quelle
Vielleicht möchten Sie auch Augeas auschecken , ein Tool zum programmgesteuerten Ändern von Konfigurationsdateien. Es ist sehr leistungsfähig in Kombination mit Puppet (einem Konfigurationsmanagementsystem), kann aber auch alleine verwendet werden.
quelle