sed mit Variablen

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

sed mit Variablen

Beitrag von Knogle » 30.09.2017 20:30:04

Ich gruesse euch liebe Community.

Aktuell versuche ich mein E-Mail Template mit Text zu fuellen.
Dabei habe ich den Bereich der ersetzt werden soll mit Text, TEXTHERE genannt, und versuche mit sed das zu ersetzen und abzuenden.
Dabei sieht meine Zeile so aus.

sed -i 's/TEXTHERE/(echo Login auf $(hostname) am $(date +%Y-%m-%d) um $(date +%H:%M)\nBenutzer: $USER\nIP: $ip)/g' /etc/ssh/template.html

Jedoch wird fuer die Variablen nix eingesetzt :/ Habe auch das Manual durchstoebert, und gegoogelt, jedoch bin ich davon nicht schlau geworden.
Wenn ich das so mache, dann werden $hostname etc. nicht ersetzt.
Woran liegt das?

rodney
Beiträge: 332
Registriert: 09.12.2016 04:15:59

Re: sed mit Variablen

Beitrag von rodney » 30.09.2017 21:38:34

$(hostname), $(date +%Y-%m-%d) sind keine Variablen. Die Variablen $USER und $ip kannst du in sed benutzen indem du die Singlequotes durch Doublequotes ersetzt:

Code: Alles auswählen

MYHOSTNAME=$(hostname); DATUM=$(date +%y-%m-%d); ZEIT=$(date +%H:%M); sed -i "s/TEXTHERE/(echo Login auf $MYHOSTNAME am $DATUM um $ZEIT\nBenutzer: $USER\nIP: $ip)/g" /etc/ssh/template.html
Hoffe es hilft dir weiter.

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: sed mit Variablen

Beitrag von Knogle » 30.09.2017 22:16:03

Danke! Jetzt habe ich es gerallt.
Habe nun noch eine Frage:
Kann ich es irgendwie hinkriegen, dass ich ein Script als root ausgefuehrt bekomme?
In dem Fall, wenn ein User sich via SSH einloggt, brauche ich sed, und das geht ja nur mit root Rechten

Weiss jemand da weiter?

Benutzeravatar
Wolf2000
Beiträge: 52
Registriert: 08.07.2017 08:19:58
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: sed mit Variablen

Beitrag von Wolf2000 » 30.09.2017 22:35:13

Hi mit
chmod +x Script.sh
zu ausfüren:
./Script.sh
und mit
cp Script.sh /usr/bin/Script
brauchst du nur Script eingeben

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: sed mit Variablen

Beitrag von eggy » 01.10.2017 20:40:14

Wolf2000 hat geschrieben: ↑ zum Beitrag ↑
30.09.2017 22:35:13
und mit
cp Script.sh /usr/bin/Script
brauchst du nur Script eingeben
Das ist keine gute Idee. Die Systemverzeichnisse überlässt man lieber dem System. Debian-fremdes gehört zum Beispiel nach /opt/ oder /usr/local. Details findest Du im Filesystem Hierarchy Standard: http://refspecs.linuxfoundation.org/FHS ... index.html

Der Grund warum Du meinst root-Rechte zu brauchen ist nicht sed, sondern, dass Du versuchst mit sed in ne Datei zu schreiben die in /etc liegt, und deren Berechtigungen wahrscheinlich sagen, dass nur root da reinschreiben darf. Vielleicht wärs ja auch ausreichend Dein Template woandershin zu legen/zu schreiben? Oder den Output von sed direkt an mail zu pipen?

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: sed mit Variablen

Beitrag von Knogle » 01.10.2017 20:51:24

Wie kriege ich es denn hin den Output direkt an mail zu pipen? Waere eigentlich ne prima Idee!

Habs anders loesen koennen.
Ich kopiere die Datei per Script aus /etc/ssh in den Home Ordner, fuehre sed aus, verschicke sie, und loesche sie wieder.

So klappt es 1A :D
Gibt es ne Moeglichkeit eine Random Nummer zu generieren?

Aktuell heisst die Datei template.html
Waere super wenn ich irgendwie eine Randomzahl mit 6 Stellen einer Variable zuordnen koennte, und diese dann der Dateiname ist, z.B. so

cp /etc/ssh/template.html ~/template*randomzahl*.html
rm ~/template*randomzahl*.html

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: sed mit Variablen

Beitrag von eggy » 01.10.2017 21:24:29

Code: Alles auswählen

 echo "blup" | sed 's_blup_foo_'  | mail -s test empfaenger@example.com 
oder so ähnlich, schau Dir die manpage an

Benutzeravatar
Wolf2000
Beiträge: 52
Registriert: 08.07.2017 08:19:58
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: sed mit Variablen

Beitrag von Wolf2000 » 01.10.2017 21:29:55

Ich mach es mit meinen Backup so

Code: Alles auswählen

echo "Hallo Wolf2000 es wurde ein Backup vom Teastserver am $DATE erstellt" | mail -s "Backup" wolf2000@debian.at

Antworten