|
|
|
|
Bonjour,
je souheterais créer un fichier csv avec les champs :
serveur : user : group : date expiration : etat date expiration
j'ai créé un script avec une commande AWK qui récupère l'etat d'expiration des user à partir de /etc/shadow (en nombre de jour >0 ou <0)
par contre, pour les champs date d'expiration et group je galère.
dans /etc/shadow, la date d'expiration est notée en nombre de jours depuis 1970. Est-ce que je peux convertir ça en date ?
Sinon est-ce que je peux integrer la commande CHAGE dans AWK ?
Et pour le groupe, je pensais utiliser la commande id mais comment integrer ça dans le AWK ?
voila à quoi ressemble mon AWK pour l'instant :
jour=$((sec/86400))
awk -v "jour=$jour", -v "hostname=$hostname" -F ":" '{print $hostname":"$1": " $8-jour}' /etc/shadow
Merci pour votre aide !!!
Configuration: Windows XP Firefox 2.0.0.11
Salut,
$ A="212814" $ A=$(($A * 86400)) $ echo $A 18387129600 $ date -u -d "1970-01-01 $A seconds" +"%d-%m-%Y" 03-04-2008Voir "info date" pour plus de détails... Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
J'ai bien trouvé la syntaxe sous "awk" qui serait sensée permettre de faire la même chose que sous le shell "bash" avec la date, mais ça marche pas et je comprends pas pourquoi !!! $ awk -F":" '/jp/ { print $8 }' fich.txt
212814
$ awk -F":" '/jp/ { print ($8 * 86400) }' fich.txt
1,83871e+10
$ awk -F":" '/jp/ { print strftime ( "%d-%m-%Y" , ($8 * 86400)) }' fich.txt
13-12-1901
Si on y colle la date du jour ça marche :$ awk -F":" '/jp/ { print strftime ( "%d-%m-%Y" , systime()) }' fich.txt
18-01-2008???
Si ça parle à quelqu'un, merci de me permettre de me coucher moins c*n ce soir ;-))) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Essaye sans espaces car chez moi ça marche !
|
Le GID se trouve dans /etc/passwd, le nom du groupe dans /etc/group, donc je ferais:
awk -v "jour=$jour" -F":" 'BEGIN {while("cat /etc/passwd "|getline)pwd[$1]=$4} ; $8 >0 {print $1 ":" ......
et donc pwd[$1] c'est le GID, $1 étant le user si je veux le nom du groupe awk -v "jour=$jour" -F":" 'BEGIN {while("cat /etc/group "| getline)grp[$3]=$1 ; while("cat /etc/passwd "|getline)pwd[$1]=grp[$4]} ; $8 >0 {print $1 ":" ......
et donc pwd[$1] c'est le group_name |