SSH Scipt - Suchen und Ersetzen

  • 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.


    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.

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.

    Ich denke, also BING ich!


    Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW!

  • aja, wäre ja gut zu wissen, was er denn ausgibt. Man könnte auch beim find und sed schlicht mal die Consolendaten anzeigen lassen.


    Ich bin mir nicht sicher, aber ich bezweifle, dass er da überhaupt hinkommt. Warum? Weil mich ehrlich gesagt das Semikolon nach dem [ "$antwort" == "j" ] stört. Kann stimmen, dann kenne ich das so aber nicht.


    Edit: Scheint wohl so auch möglich zu sein. Kannte ich nicht.

  • Also wenn ich das bei mir ausführe, dann findet "find" die entsprechende Datei, aber die "sed" sagt dann: "sed: kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden"

  • Du hast irgendein Prolem mit dem s/$ausdruck/$ersetzung/g . Hardcoded mit festen Werten geht es. Aber auch nur, wenn ich aus -i '' ein -i mache, denn mit den '' bekomme die Fehlermeldung von oben.

  • Arg, so geht das..... Deine Variablen werden in einfachen ' ' gar nicht ausgeführt, in " " aber schon.


    Code
    find . -type f -name $endung -print0 | xargs -0 sed -i -e "s/$ausdruck/$ersetzung/g"


    In Deinem Script vorher, also aus dem anderen Post, da hattest Du keine Variablen, sondern feste Vorgaben. Und Du siehst wohl hoffentlich, dass die Aussage "kann den Server kaputt machen" 100% richtig ist. Es wird nix geprüft, nix maskiert, rein gar keine Schutzfunktionen. Und die Ersetzung von gestern, also mit HSTS, würde nun auch nicht mehr gehen, denn das beinhaltet selbst "". Wie gesagt, nix maskiert und Co.

  • und das " sed -i '' " Also mit den beiden einfachen Anführungszeichen. Das kann auch das Problem gewesen sein, aber was soll das überhaupt bringen? Das -i ist doch dafür da, dass es ein Backup der Datei anlegt, bevor sed sie ändert. Wenn die dann zu verwendende Extension aber '' sein soll, wo ist dann der Sinn? Wenn schon ".bak" oder so was. Aber was macht ein leerer Wert für einen Sinn?


    Wobei das bei mir mit -i ".bak" auch nicht geht, kommt wieder ein "Datei nicht gefunden". Also egal was hinter dem -i kommt.


    Ein -i.bak hingegen geht, es wird eine Sicherung angelegt. Aber, das Original nicht geändert. Wo hast Du eigentlich immer diese Code-Beispiele her? Die Option "-i" ist vom Original GNU-SED oder eben auch vom MAC.

  • Ich habe den Beitrag mal korrigiert. " ist natürlich dann richtig statt '


    Irgend ne Idee wie man das eleganter machen kann? Also das Script selber ist "toll". Könnte man so einiges, nach Anpassung zB per Cron automatisieren. zB Logfiles ändern kommt mir da in den Sinn.

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.

    Ich denke, also BING ich!


    Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW!

  • aja und ich habe das getestet. macht wirklich was es soll. Also auch innerhalb des Ordners und nicht Serverweit. man muss natürlich erst mit CD wechseln zB in den Vhost Ordner wo das gemacht werden soll. Liegt ein Ordner drunter, macht er das nicht.


    Nur mal so als Hinweis.

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.

    Ich denke, also BING ich!


    Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW!

  • kann den Server kaputt machen" 100% richtig ist. Es wird nix geprüft, nix maskiert, rein gar keine Schutzfunktionen

    Deswegen fragt er ja nochmal nach :D:D:D


    Nee, also bei richtiger Bedienung macht der nix kaputt. Man könnte aber vielleicht einen dry run anbieten. Das wäre dann natürlich ein perfektes Suchen und Ersetzen Script. Ich überlege mir mal, das sollte nicht so kompliziert sein...

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.

    Ich denke, also BING ich!


    Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW!

  • Der kann jetzt auch in einer Liste speichern. Eigentlich wollte ich nur den Pfad und welche datei geändert wird. Ist aber glaube ich nicht möglich. Kann nur über Find das Muster suchen, das klappt. Allerdings geht es nach dem Suchen und Ersetzen nicht mehr korrekt weiter.


    Ich gebe erstmal auf

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.

    Ich denke, also BING ich!


    Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW!

  • Nee, also bei richtiger Bedienung macht der nix kaputt.

    Das ist halt immer das Problem. Für einen selbst kein Problem, aber wenn das was öffentliches ist, das andere auch nutzen können, dann schon. Alleine schon so was wie per cd in Verzeichnis wechseln. Wie viele von 100 Leuten, die schnell was suchen und es dann einfach verwenden vergessen das?


    Oder so was wie ein * im Input. * und "*" sind zwei völlig verschiedene Dinge, auch wenn die meisten glauben werden, es sei gleich. Dann hast Du das Problem mit Suchbegriff und Ersatz. Da darf kein / und auch kein " vorkommen. Das mit dem / könnte man einfach lösen, indem Du einfach einen anderen Wertetrenner nimmst, etwas exotisches. Das mit dem " aber nicht, das muss maskiert werden. Und wenn man das " schon maskiert, dann kann man das mit dem / auch gleich machen.


    Sprich, wegen dem *


    Ein find . -type f -name *.txt macht was völlig anderes als ein find . -type f -name "*.txt". Im ersten Fall ist der Stern einfach ein Stern, im zweiten Fall ein Wildcard.