Script shell AWK
Résolu/Fermé
A voir également:
- Script shell AWK
- Script vidéo youtube - Guide
- Classic shell windows 10 français - Télécharger - Personnalisation
- Script bat - Guide
- Lancer script python linux - Forum Ubuntu
- Awk split ✓ - Forum Shell
10 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
18 janv. 2008 à 13:24
18 janv. 2008 à 13:24
Salut,
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 ?
Oui :
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 ?
Oui :
$ 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...
Merci c'est utile..
mais comment je peux faire intégrer la conversion pour chaque user de /etc/shadow dans mon AWK ?
merci
mais comment je peux faire intégrer la conversion pour chaque user de /etc/shadow dans mon AWK ?
merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
18 janv. 2008 à 14:59
18 janv. 2008 à 14:59
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 !!!
Si ça parle à quelqu'un, merci de me permettre de me coucher moins c*n ce soir ;-)))
$ 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-1901Si 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 ;-)))
essaye sans espaces car chez moi ça marche !
voila le script qui marche
#!/bin/sh
sec=`date +%s`
jour=$((sec/86400))
FILE=/home/exec_cmd/expire2.tmp
hostname=`hostname`
echo $hostname
echo "" > $FILE
awk -v "jour=$jour" -F":" '$8 >0 {print $1 ":" $8-jour ":" strftime ( "%d-%m-%Y" , $8*86400)} $8 == "" {print $1 ":Jamais"}' /etc/shadow >> $FILE
Il me reste un dernier probleme c'est la récupération du groupe de chaque user (à integrer dans le AWK)...
en tout cas chapeau JP !
voila le script qui marche
#!/bin/sh
sec=`date +%s`
jour=$((sec/86400))
FILE=/home/exec_cmd/expire2.tmp
hostname=`hostname`
echo $hostname
echo "" > $FILE
awk -v "jour=$jour" -F":" '$8 >0 {print $1 ":" $8-jour ":" strftime ( "%d-%m-%Y" , $8*86400)} $8 == "" {print $1 ":Jamais"}' /etc/shadow >> $FILE
Il me reste un dernier probleme c'est la récupération du groupe de chaque user (à integrer dans le AWK)...
en tout cas chapeau JP !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
18 janv. 2008 à 16:21
18 janv. 2008 à 16:21
Même sans espace c'est pareil ;-(((
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
18 janv. 2008 à 16:43
18 janv. 2008 à 16:43
Ben c'est déjà fait, mais toujours pareil ;-((
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
19 janv. 2008 à 15:55
19 janv. 2008 à 15:55
le GID se trouve dans /etc/passwd, le nom du groupe dans /etc/group, donc je ferais:
et donc pwd[$1] c'est le GID, $1 étant le user
si je veux le nom du groupe
et donc pwd[$1] c'est le group_name
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
19 janv. 2008 à 18:52
19 janv. 2008 à 18:52
Merci ;-))
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
20 janv. 2008 à 09:10
20 janv. 2008 à 09:10
On peut condenser la deuxième version:
awk -v "jour=$jour" -F":" 'BEGIN {while("cat /etc/group /etc/passwd "| getline)NF==4 ? grp[$3]=$1: pwd[$1]=grp[$4]} ; ....
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
20 janv. 2008 à 10:26
20 janv. 2008 à 10:26
Thanks again ;-))