Aide sur script Awk

Fermé
ldesdes - 19 juin 2005 à 22:57
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 - 19 juin 2005 à 23:38
Bonsoir,

Je me penche actuellement sur un script pour récupérer les adresses IP des personnes qui tentent de s'authentifier en SSH sur mon serveur (authentification qui echouent)

J'ai un petit soucis avec la commande awk.
Voici ci-dessous la version qui fonctionne :
cat /var/log/messages | grep sshd | grep "Failed password for invalid user" | awk -F ' ' '($2=="19") && ($3 ~ /^19:26/) {print $13}'

Et voici la version qui ne fonctionne pas :
jour="19"
heure="19"
minute="26"
cat /var/log/messages | grep sshd | grep "Failed password for invalid user" | awk -F ' ' '($2=="$jour") && ($3 ~ /^$heure:$minute/) {print $13}'

Si quelqu"un a une idée parce que j'ai tout essayé et je ne vois vraiment pas !

Merci.
A voir également:

2 réponses

asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
19 juin 2005 à 23:11
Salut

un coup d'oeil rapide au man en cherchant "variable" t'aurait donné la réponse ;)

Essaye ça:
jour="19"
heure="19"
minute="26"
cat /var/log/messages | grep sshd | grep "Failed password for invalid user" | awk -v  j=$jour -v h=$heure -v m=$minutes  -F ' ' '($2==j) && ($3 ~ /^h:m/) {print $13}' 
++
0
Re-bonsoir,

je viens de tester, cela ne marche pas non plus . :-(
J'ai déjà jetter un oeil au man de awk ainsi qu'a divers HOWTO mais je n'ai rien trouvé de plus.

Pour info.
Le shell est le bash et je suis sous fedora core 3.
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426 > ldesdes
19 juin 2005 à 23:34
Effectivement, j'avais pas fais gaffe à la regexp, mais a mon avi, awk n'est du coup pas l'outil le plus aproprié pour ça, pourquoi ne pas faire simplement un grep avec tout l'expression reguliere (" $jour $heure:$minute.*sshd.*Failed blablabla") le tout combiné à sed, ou simplement à cut ?
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426 > ldesdes
19 juin 2005 à 23:37
grep "$jour $heure:$minute.*sshd.*Failed password" /var/log/messages | cut -d' ' -f 13
Par exemple :)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
19 juin 2005 à 23:29
Salut,

Essaie comme ça :
cat /var/log/messages | grep sshd | grep "Failed password for invalid user" | awk -F ' ' '($2=='$jour') && ($3 ~ /^'$heure':'$minute'/) {print $13}' 
Il faut "quoter" chaque morceau du programme "awk" pour que le shell puisse continuer à accéder aux variables.
0
Merci beaucoup...
C'est bon ca fonctionne, j'aurai pu me creuser la tête encore des heures avant de trouver ça.

A+
bonne fin de soirée.
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
19 juin 2005 à 23:38
arf, un peu lent sur le coup :)
Puis j'avais totalement zappé l'utilisation des variable du shell...

Bien joué :)
0