Voulez-vous appliquer ceci à crontab:
crontab -l > nopass
echo 'ALERT - Found a user without password on:' `hostname` `date` | cat /etc/shadow | awk -F: '($2==""){print $1}' | mail -s "Alert: Found a user without password on `hostname` `who | awk '{print $6}'`" $ADMIN_MAIL >> nopass
crontab nopass
rm nopass
Mais cette longue ligne n'est pas appliquée. Est-ce parce que la structure de la chaîne est incorrecte ou parce que crontab a une sorte de limite en caractères? Peut-être y a-t-il un moyen plus pratique de faire ce que je veux?
who | awk '{print $6}'
Si vous avez un utilisateur avec 100 xterm ouvert, il vous donnera 100 lignes pour le même utilisateur (que vous n'imprimez pas car se trouve dans le premier champ). S'il s'agit de la console, vous aurez 100 lignes vides. Pourquoi n'avez-vous pas mis votre longue ligne dans un multi ligne sh ou bash script et vous l'appelez de cron? Si ça vous dérange, jetez un coup d'oeil ici et encore plus ici ...Réponses:
Il y a au moins un problème avec votre "longue ligne":
La sortie du
echo
la commande sera perdue.Votre code gagnerait beaucoup à séparer les éléments en plusieurs instructions / lignes distinctes.
la source