syntax1001
Goto Top

Bash script - Zeilen aus einer config datei entfernen

Hallo Zusammen,

ich möchte gerne in einem Bash script einen Befehl einbauen mit dem ich bestimmte Zeilen aus einer config Datei entfernen kann.

Ich habe es bereits getestet, indem ich nur eine Zeile entferne, das hat auch funktioniert.

sed '/Match User test2/d' /etc/ssh/sshd_config > /home/script/test2.txt  

Aber wie kann ich es nun mit mehreren Zeilen machen ? Ich habe im Netz nichts konkretes gefunden..

Ein Beispiel:
Match User test2
Text aus Zeile 2
Text aus Zeile 3
Text aus Zeile 4
Text aus Zeile 5

Diese Zeilen sollen nun aus der config Datei entfernt werden. Der Rest der config Datei wird, so wie ich es verstanden habe, nun in die test2.txt geschrieben. Also der ganze Inhalt der config Datei, außer die bestimmten Zeilen.

Anschließend wird der Inhalt der test2.txt den Inhalt der config Datei überschreiben.

Und zwar mit
mv /home/script/test2.txt /etc/ssh/sshd_config

Wie kann nun der Befehl zum entfernen der 5 Zeilen aussehen ? Oder muss ich die Sache ganz anders angehen ?

LG
rOMOP11

Content-Key: 379879

Url: https://administrator.de/contentid/379879

Printed on: April 19, 2024 at 04:04 o'clock

Mitglied: 129580
Solution 129580 Jul 11, 2018 updated at 11:24:51 (UTC)
Goto Top
Hi,

mv /home/script/test2.txt /etc/ssh/sshd_config

Warum überhaupt der Umweg über eine zweite Datei, wenn die zweite Datei ohnehin nicht als Backup genutzt werden soll? Anstatt dass du die Ausgabe in ein zweites Textfile machst und dann mit dieser die sshd_config Datei überschreibst, kannst du auch die Änderung direkt in die Datei schreiben mit dem Parameter -i. Teste das aber vorher auf einem Testsystem und/oder erstelle vorher ein Backup von der sshd_config.

Aber wie kann ich es nun mit mehreren Zeilen machen ? Ich habe im Netz nichts konkretes gefunden..

Für fünf Zeilen würd ich einfach fünf sed Befehle machen.

Viel Grüße,
Exception
Member: bloodstix
Solution bloodstix Jul 11, 2018 at 11:39:13 (UTC)
Goto Top
Du kannst deine zu entfernenden Zeilen in eine Datei packen und dann wie folgt verarbeiten:
while read line; 
do
    sed -e "/$line/d" -i /etc/ssh/sshd_config  
done < /tmp/Datei_mit_zu_entfernenden_Zeilen
Member: colinardo
colinardo Jul 11, 2018 updated at 20:48:03 (UTC)
Goto Top
SED wurde genannt, GREP kann es auch
cat /etc/ssh/sshd_config | grep -Pvi "magichnicht|magichauchnicht|nochwas|blabla" >/etc/ssh/sshd_config
Bitte für SED und GREP beachten, beide nutzen Regex-Strings, also ans Escaping denken.

Grüße Uwe
Member: bloodstix
bloodstix Jul 11, 2018 at 17:42:18 (UTC)
Goto Top
Jap, mehr gibts kaum zu sagen außer: Wenn man sich nicht sicher ist immer Backups von den entsprechenden Dateien machen. Auch temporäre 2.-Dateien helfen nicht, wenn man sie dann ohne Prüfung auf die Originale moved :D.