echo n'applique pas de ligne à crontab

0

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?

user385917
la source
1
Peut-être devriez-vous expliquer ce que vous voulez.
Teun Vink
...en outre 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 ...
Hastur

Réponses:

1

Il y a au moins un problème avec votre "longue ligne":

echo 'ALERT - Found a user without password on:' `hostname` `date` | cat /etc/shadow

La sortie du echo la commande sera perdue.

Votre code gagnerait beaucoup à séparer les éléments en plusieurs instructions / lignes distinctes.

Teun Vink
la source