Forum: PC-Programmierung Linux skript


von Martin (Gast)


Lesenswert?

Hallo, ich benötige Hilfe bei einem Linux Skript um eine manuelle 
Eingabe/Änderungen per Skript zu lösen. Im Nachfolgenden sind die 
einzelnen Schritte die ich per manuell durchführe aufgelistet:

1)vi lighttpd_conf
2)suchen nach cat << EOF server.document-root = "$docroot" EO
3)ergänzen durch server.max-request-size=100000000
server.upload-dirs=( " uploads" )
server.network-backend = "writev"


Ergebnis:
cat << EOF
server.document-root = "$docroot"
server.max-request-size=100000000
server.upload-dirs=( " uploads" )
server.network-backend = "writev"
EOF
4)mkdir uploads
5)chown wwwrun:wwwrun uploads
6)lighttpd starten.

Kann mir jmd. Dazu ein kurzes Linux Skript schreiben?

Wäre super genial :)

Danke

von Daniel A. (daniel-a)


Lesenswert?

Martin schrieb:
> Hallo, ich benötige Hilfe bei einem Linux Skript um eine manuelle
> Eingabe/Änderungen per Skript zu lösen

Es gibt kein "Linux Skript", vermutlich ist ein shellscript gemeint

Was spricht gegen ein

cp angepaste_config backup
Cp backup umangepaste_config

Sonst wird das womöglich ziemlich kompliziert...

von LOL (Gast)


Lesenswert?

Als Lösungsansatz:

Keine Ahnung ob vi für sowas das richtige Werkzeug ist, normal macht man 
relativ viel mit sed in Skripten.
Der Suchen & Ersetzen Teil in dem Script könnte das hier sein - 
Vorsicht, ungetested.
1
sed -i.org -e 's#\(^[[:space:]]*server\.document-root[[:space:]]*=[[:space:]]*"\$docroot"[[:space:]]*$\)#\1\nserver.max-request-size=100000000\nserver.upload-dirs=( " uploads" )\nserver.network-backend = "writev"#g' lighttp.conf
Das lässt das docroot intakt und fügt die zeilen hinten an.
Wenn das docroot wirklich ersetzt werden soll, muss das in etwa so 
aussehen:
1
sed -i.org -e 's#^[[:space:]]*server\.document-root[[:space:]]*=[[:space:]]*"\$docroot"[[:space:]]*$#server.max-request-size=100000000\nserver.upload-dirs=( " uploads" )\nserver.network-backend = "writev"#g' lighttp.conf

Zur Sicherheit machen beide sed-Teile ein Backup der Datei, Dateiname 
*.org. Wenn sed mit 'sed -i -e ...',also ohne .org aufgerufen wird, dann 
fällt das weg - ist aber keine gute Idee.

Falls da Fehler drin sind: google nach sed hilft. Ich verhau mich da 
ganz gern mal, weil sed ein wenig komisch ist welche Teile eines regex 
mit \ escaped werden müssen und welche nicht.

Der Rest ist trivial, der letzte Teil (6.) abhängig von der verwendeten 
Distribution bzw. initsystem, typischerweise sowas wie "service lighttpd 
restart" bzw. besser sogar "service lighttpd reload".

Der ganze Kram wird als root, ggf. via sudo laufen müssen.

von Rolf Magnus (Gast)


Lesenswert?

LOL schrieb:
> Keine Ahnung ob vi für sowas das richtige Werkzeug ist, normal macht man
> relativ viel mit sed in Skripten.

vi basiert wie sed auf ed. Die sind also gar nicht so verschieden.

von martin (Gast)


Lesenswert?

Funktioniert danke :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.