Hallo Leute
Ich versuche mich an ein Script das mit in einer config Datei das # Symbol am Anfang löscht, den Rest in der Zeile aber stehen Läst.
beispiel
# [Archiv]
# comment = freigabe
in
[Archiv]
comment = freigabe
Es ist zu sehen das es für Samba ist, ich habe schon durch probieren heraus bekommen:
sed -n '/\[Archiv].*/, +2p' smb.conf
Diese Ausgabe erfolgt:
# [Archiv]
# comment = freigabe
meine Idee war nun hinten noch 's/\^#//' zu setzen, damit das # durch eine Leerzeichen ersetzt wird.
Leider bekomme ich eine Fehlermeldung und weiß nun nicht mehr weiter.
Da auch in der smb.conf andere Freigaben stehen die ein # haben können soll nur der Teil [Archiv]
verändert werden.
Ich wäre über ein Tip dankbar um weiter zu kommen.
Gruß dfo231
sed befehl, ein symbol aus einer zeile
Re: sed befehl, ein symbol aus einer zeile
Du darfst das ^ nicht escapen, wenn es fuer den Zeilenanfang stehen soll. Versuch mal das: /^# */
Wenn du am Ende alle Zeilen ausgeben willst, dann lass das `-n' weg. Verwende stattdessen einen Range um die Bearbeitung einzugrenzen, z.B. so:
(Verwende Code-Tags fuer Beispiele in deinen Posts.)
Wenn du am Ende alle Zeilen ausgeben willst, dann lass das `-n' weg. Verwende stattdessen einen Range um die Bearbeitung einzugrenzen, z.B. so:
Code: Alles auswählen
sed '
/\[Archiv\]/,/^$/ {
s/.../.../
}
'
Use ed once in a while!
Re: sed befehl, ein symbol aus einer zeile
Da es hier speziell um samba geht,
lagere die Freigabeanweisungen (oder was sonst noch) in separate Dateien aus,
welche von der Haupt-smb.conf per 'include' eingebunden werden.
Dann muß nur noch die entsprechende 'include'-Anweisung ein/auskommentiert werden.
(Wobei das 'include' auch in per 'include' eingebundenen Dateien verwendet werden kann.
Zur Sicherheit sollten absolute Pfade dafür verwendet werden)
Bei der Auslagerung daran denken,
daß auch die Anweisung '[abschnitt]' ausgelagert wird,
da sonst [abschnitt] weiter Bestand hat, aber mit eventuell ungewollten default-Einstellungen.
Eine weitere Möglichkeit zur Organisation, die Anweisung 'copy':
lagere die Freigabeanweisungen (oder was sonst noch) in separate Dateien aus,
welche von der Haupt-smb.conf per 'include' eingebunden werden.
Dann muß nur noch die entsprechende 'include'-Anweisung ein/auskommentiert werden.
(Wobei das 'include' auch in per 'include' eingebundenen Dateien verwendet werden kann.
Zur Sicherheit sollten absolute Pfade dafür verwendet werden)
Bei der Auslagerung daran denken,
daß auch die Anweisung '[abschnitt]' ausgelagert wird,
da sonst [abschnitt] weiter Bestand hat, aber mit eventuell ungewollten default-Einstellungen.
Eine weitere Möglichkeit zur Organisation, die Anweisung 'copy':
Code: Alles auswählen
[meine0]
a = b
c = d
e = f
[meine1]
copy = meine0
a = z
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: sed befehl, ein symbol aus einer zeile
Ich arbeite in der smb.conf auch mit (zwei) includes, ähnlich wie rendegast das vorschlägt:
und lasse die include.conf von einem Script (gen-includes.sh) generieren. So schaut bei meinem Sambaserver die Struktur aus:
Das hier war dafür meine Inspiration: http://serverfault.com/a/649619/11340
Über die overrides kann ich adhoc vorher definierte Shares anpassen.
Ich denke so eine Lösung ist flexibler als das, was du da vorhast. Nimm dir die Zeit und bau dir deine jetzige smb.conf um - lagere alle shares aus.
Das ist eine gut investierte Zeit, vllt. findest du dann auch noch einige Altlasten, die du gleich mit entsorgen kannst.
Code: Alles auswählen
include = /etc/samba/includes.conf
include = /etc/samba/overrides.conf
Code: Alles auswählen
tree /etc/samba/
├── dhcp.conf
├── gdbcommands
├── gen-includes.sh
├── includes.conf
├── overrides.conf
├── shares.available
│ ├── attic.conf
│ ├── dlna.conf
│ ├── drucker.conf
│ ├── Familie.conf
│ ├── homes.conf
│ ├── Medien.conf
│ └── test.conf
├── shares.enabled
│ ├── attic.conf
│ ├── dlna.conf
│ ├── drucker.conf
│ ├── Familie.conf
│ ├── homes.conf
│ └── Medien.conf
└── smb.conf
Über die overrides kann ich adhoc vorher definierte Shares anpassen.
Ich denke so eine Lösung ist flexibler als das, was du da vorhast. Nimm dir die Zeit und bau dir deine jetzige smb.conf um - lagere alle shares aus.
Das ist eine gut investierte Zeit, vllt. findest du dann auch noch einige Altlasten, die du gleich mit entsorgen kannst.
Re: sed befehl, ein symbol aus einer zeile
Hallo Leute
Danke für die Vorschläge.
Das mit der include lösung ist schön, stellt mich jetzt aber vor dem Problem das
ich das auch erstmal komplett lernen muss.
Gibt es da eine Hilfeseite die ich nutzen kann?
Vielen Dank euch.
Gruß Dfo231
Danke für die Vorschläge.
Das mit der include lösung ist schön, stellt mich jetzt aber vor dem Problem das
ich das auch erstmal komplett lernen muss.
Gibt es da eine Hilfeseite die ich nutzen kann?
Vielen Dank euch.
Gruß Dfo231