ubuntuusers.de

Text in Config Datei ersetzen

Status: Gelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

Mokkujin

Anmeldungsdatum:
2. Mai 2008

Beiträge: 389

Wohnort: Hannover

Hallo an alle,

brauch mal kurz Hilfe ich hab hier ein Skript am laufen was mir Benutzer für meinen SFTP Server anlegt. Das funktioniert auch soweit aber ich hab jetzt einen Knoten im Kopf. möchte natürlich immer den neuen Benutzer in der sshd_config in die AllowUsers Section mit eintragen, kann mir da mal jemand einen Tipp geben ?

Also ich stell mir das so vor :

Suche in Datei sshd_config die Zeile AllowUsers ersetzte die Zeile AllowUsers durch die ausgelesene + den neuen User

Jemand eine Idee wie ich das umsetzen kann ?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11260

Wohnort: München

1
2
3
4
5
$ cat sshd_config 
AllowUsers Hans
$ new_user=Franz
$ sed "s/^\(AllowUsers\ [[:alnum:]]\+\)/\1\ $new_user/" sshd_config
AllowUsers Hans Franz

Mit dem Argument -i schreibt sed dann direkt in die Datei.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

1
2

sed '/AllowUsers/aneuer User/' /etc/ssh/sshd_config 

Sucht AllowUsers und fügt an (a:=add) neuer User.

Mit -i sudo sed -i cmd file wird die Änderung in die Datei geschrieben statt auf den Bildschirm.

Mokkujin

(Themenstarter)

Anmeldungsdatum:
2. Mai 2008

Beiträge: 389

Wohnort: Hannover

Danke erstmal für eure Antworten, mit

1
sed '/AllowUsers/aneuer User/' /etc/ssh/sshd_config

macht er mit immer eine neue Zeile und die Version von seahawk funktioniert bei mir nicht denke mal liegt an der Version kann man das auch noch so einfügen das er keine neue Zeile macht ? Finde da keinen Parameter für.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

Mokkujin schrieb:

Danke erstmal für eure Antworten, mit

1
sed '/AllowUsers/aneuer User/' /etc/ssh/sshd_config

macht er mit immer eine neue Zeile und die Version von seahawk funktioniert bei mir nicht denke mal liegt an der Version kann man das auch noch so einfügen das er keine neue Zeile macht ? Finde da keinen Parameter für.

Dafür gibt es meines Wissens keine Option. Ich vermute, das bekommt man mit dem Hold-Space hin. Aber da bin ich auch kein Experte.

Hier ist noch eine andere Variante:

$ cat x
foo
AllowUsers bar
AllowUsersXyz bar
baz
$ sed '/^AllowUsers\>/s#$# newuser#' x
foo
AllowUsers bar newuser
AllowUsersXyz bar
baz 

Da ist der Ersetzungsausdruck etwas einfacher: es wird einfach am Zeilenende ("$") ein Leerzeichen und der Name des neuen Benutzers eingefügt. Wenn man den aus einer Variable ziehen will, muss man doppelte Anführungsstriche verwenden:

$ newuser=otto
$ sed '/^AllowUsers\>/s#$# '"$newuser#" x
foo
AllowUsers bar otto
AllowUsersXyz bar
baz 

Mokkujin

(Themenstarter)

Anmeldungsdatum:
2. Mai 2008

Beiträge: 389

Wohnort: Hannover

@rklm : Danke genau das war die Lösung 😉

1
sed -i '/AllowUsers/s!$!'" $USER"'!' /etc/ssh/sshd_config

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

Achso, ich habe mir das Format der Datei nicht angesehen, und gedacht "AllowUsers" sei eine Sektionsüberschrift, und der neue User gehöre darunter.

Es soll also aus

1
AllowUsers Susi Petra Klara 

mit dem neuen User Liz

1
AllowUsers Susi Petra Klara Liz 

werden? Testen:

1
sed 's/^AllowUsers.*/& Liz/' /etc/ssh/sshd_config

bzw.

1
sudo sed -i 's/^AllowUsers.*/& Liz/' /etc/ssh/sshd_config

um die Datei dauerhaft zu ändern.

Das Kommando "s/a/b/" steht für substitute a durch b. & ist der gesamte gefundene Ausdruck.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

Mokkujin schrieb:

1
sed -i '/AllowUsers/s!$!'" $USER"'!' /etc/ssh/sshd_config

Mein Ausdruck mit den Ankern ist etwas robuster. Dein Ausdruck ersetzt auch in Zeilen die "AllAllowUsers" oder "AllowUserstate" enthalten.

Antworten |