• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

awk, sed oder doch lieber etwas anderes?

franz2000

Newbie
Hallo!

ich würde gerne aus awk heraus einen externen befehl aufrufen.

mein problem:

ich möchte das alter der smb-passwörter aus der smbpasswd herauslesen und gegebenenfalls eine erinnerungsmail schicken, dass es bitte geändert werden soll.

ich habe jetzt mit einem kleinem awk skript die spalte mit dem passwortalter aus der smbpasswd herausgelesen. weiters habe ich ein kleines script, dass mir das in hex-code angegebene eintragungsdatum des passwortes (unix-time) in ein für uns lesbares format (alter in tagen) umwandelt.

beide funktionieren, nur schaffe ich es leider nicht sie zu vereinen. awk liefert mir (genau) eine spalte. wenn ich von ausserhalb des awk-skripts das andere aufrufe, wird natürlich nur der letzte wert umgewandelt. und von innerhalb des awk-skriptes schaffe ich es nicht, einen "externe" befehl aufzurufen.

hier die beiden skripts:
das awk-skript zum herauslesen der spalte mit dem passwortalter: (an stelle des "M" möchte ich dann gerne eine spalte mit alter in tagen anfügen)

Code:
awk 'BEGIN {FS = ":"} {print $1,$6,"M"}' /etc/samba/smbpasswd |
sed -e 's?LCT-??' -e 's? ?;?' -e 's? ?;?' > smbpass

das skript zum umwandeln:
Code:
dsecondsnow=$(date +%s) //akutelle zeit in sekunden, dezimal
hsecondspass=$1                //passwortalter in sekunden, hex
hsecondsnow=$(echo -e 'obase=16;'$dsecondsnow'' | bc)
dsecondspass=$(echo -e 'ibase=16;'$hsecondspass'' | bc)
let sdiff=dsecondsnow-dsecondspass
let temptdiff=sdiff/3600
let tdiff=temptdiff/24
echo $tdiff

wie bring ich die beiden zusammen?

das endprodukt stelle ich mir dann so vor:
name;eintragunsdatum-hex;alter-in-tagen
franz;418009AD;3

schon mal vielen dank
LG,
Franz
 
OP
F

franz2000

Newbie
scheinbar hat das mit der formatierung bei mir noch nicht ganz hingehauen. vermute es lag an der option "html aus".
 
OP
F

franz2000

Newbie
ich habs jetzt so gemacht, dass ich die tabelle, die von awk geliefert wird, in eine datei speichere. dann mit einer for-schleife das externe programm drüber laufen lasse und nachher diese datei wieder lösche.....
 
Oben