Ich habe schon einen Entwurf gemacht für Suchen und Ersetzen in .htaccess Dateien auf einem Server. Nun wollte ich das Script erweitern, also das nach Ausdruck gesucht wird und ersetzt.
Leider klappt das noch nicht so wie ich das möchte. Das SSH Sript tastet es an, änder aber nix.
#!/bin/bash
# ersetzen.sh
echo "Willkommen beim Suchen und Ersetzen Tool für SSH Server von SEO NW"
echo "Bitte VORHER ein Backup machen!"
echo "Suchen und Ersetzen!"
echo "Nach welcher Dateiendung soll im aktuellen Ordner rekursiv gesucht werden? (zB '*.htaccess')"
read endung
echo "Nach welchem Ausdruck innerhalb der Datei soll gesucht werden?"
read ausdruck
echo "Nach was soll ersetzt werden?"
read ersetzung
echo "Jetzt wird alles nach $ausdruck mit $ersetzung mit der Endung bzw File $endung ersetzt. Sicher?"
read -p"Wirklich durchführen - Kann den Server kaputt machen (j/n)? Oder lieber einen Dry Run (d)? Du kannst auch eine Liste mit den Dateien erstellen (t)" antwort
# Bildschirm löschen
#clear
# Konsolenausgabe und Bearbeitung
if [ "$antwort" == "j" ]; then
find . -type f -name $endung -print0 | xargs -0 sed -i '' -e "s/$ausdruck/$ersetzung/g"
echo "Es wurde alles nach den Paramtern ersetzt. Das Script kann nun beendet werden!"
elif
[ "$antwort" == "d" ]; then
find . -type f -name $endung -print0 | xargs -0 sed "s/$ausdruck/$ersetzung/gp"
echo "Dies war ein Dry Run mit Anzeige aller Ergebnisse. Das Script kann nun beendet werden!"
elif
[ "$antwort" == "t" ]; then
find . -type f -name $endung -print0 | xargs -0 sed "s/$ausdruck/$ersetzung/g" > liste.txt
echo "Dies war ein Dry Run mit Erstellung einer Liste. Die Liste befindet sich im Ordner unter dem Namen liste.txt . Das Script kann nun beendet werden!"
else
echo "Das Programm wurde abgebrochen. Nichts wurde verändert!"
fi
Alles anzeigen
Soweit klappt es. Er ändert nur nix. Kann ne Kleinigkeit sein, aber ich finde die nicht...
Bitte.. bevor ihr das testet, es geht wirklich nicht bei mir. Auch solltet ihr vorher ein CD in einer Testumgebung machen. Bei mir geht es leider nicht. Habe ich gestestet mit einem String, der nur einmal auf dem Server vorkommt. Er liest das wohl ein, macht irgendwas, aber ersetzt nicht.
Ich finde so ein SHH Script ist wichtig, grade wenn man kleinigkeiten machen möchte. Noch ist es aber in der Beta und funktioniert nicht richtig. Bin aber noch dran.