#1 Le 11/05/2010, à 12:23
- auguste57
[Résolu] Trouver des infos, puis les retranscrire !
Bonjour,
Je souhaiterais savoir s'il était possible de chercher des infos dans un fichier, et les retranscrire dans un autre...
Je m'explique : Dans un fichier de log, j'ai des adresses IP qui s'affichent si une connexion a été réalisé ! Je voudrais donc savoir si, à partir de ce fichier (qui n'est pas très compréhensible), il est possible de trouver les adresses IP, afin de les retranscrire dans un autre fichier...
Je dispose d'une plage d'adresse IP. Je pensais faire quelques choses comme si l'adresse est présente dans le fichier, c'est qu'il s'est connecté....par contre, si cette adresse ne l'est pas, il ne s'est pas connecté !
Exemple :
Fichier 1 : Fichier 2 :
192.168.0.1 connect 192.168.0.1 s'est connecté au serveur le $(date)
192.168.0.2 connect 192.168.0.2 s'est connecté au serveur le $(date)
192.168.0.4 connect 192.168.0.3 ne s'est pas connecté au serveur
192.168.0.4 s'est connecté au serveur le $(date)
Merci...
Dernière modification par auguste57 (Le 12/05/2010, à 12:52)
Hors ligne
#2 Le 11/05/2010, à 14:37
- wido
Re : [Résolu] Trouver des infos, puis les retranscrire !
j'ai fait ça:
utilisation: /dossier/script "/dossier/tonfichier1"
#!/bin/bash
LOG=/home/$USER/logIP.log
FICHIER=$1
CWD=/tmp/iptest
if [ ! -d $CWD ]
then
mkdir -p ${CWD}
fi
cd $CWD
CONNECTER(){
while read ligne
do
connect=`echo "$ligne" | awk '{print $2}'`
IP=`echo "$ligne" | awk '{print $1}'`
if [ "$connect" = connect ]; then
echo "$IP s'est connecté au serveur le $(date)" >> $LOG
fi
echo "$IP" >> ${CWD}/IPCONNECTER.log
done < $FICHIER
}
DECONNECTER()
{
cat > ${CWD}/IPTOTAL.log << EOF
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
EOF
diff -d ${CWD}/IPTOTAL.log ${CWD}/IPCONNECTER.log | grep "<"|tr -s "<" " " > ${CWD}/IPDECONNECTER.log
IPDECO=`cat /tmp/test.log`
echo "$IPDECO n'est pas connecté au serveur le $(date)" >> $LOG
}
CONNECTER
DECONNECTER
rm -R ${CWD}
/!\ ne modifie pas la variable CWD, le dossier est effacé à la fin.
Dernière modification par wido (Le 11/05/2010, à 15:35)
Hors ligne
#3 Le 12/05/2010, à 09:31
- auguste57
Re : [Résolu] Trouver des infos, puis les retranscrire !
Déjà un grand merci pour votre réponse !
Sinon, la première partie fonctionne... mais il ne m'affiche pas les IP non connectés !
Voilà la réponse dans le terminal :
cat: /tmp/test.log: Aucun fichier ou dossier de ce type
et dans le fichier logIP.log, je n'ai seulement ceci :
192.168.0.1 s'est connecté au serveur le mercredi 12 mai 2010, 10:26:58 (UTC+0200)
192.168.0.2 s'est connecté au serveur le mercredi 12 mai 2010, 10:26:58 (UTC+0200)
192.168.0.4 s'est connecté au serveur le mercredi 12 mai 2010, 10:26:58 (UTC+0200)
n'est pas connecté au serveur le mercredi 12 mai 2010, 10:26:58 (UTC+0200)
Je pense qu'il y a un soucis au moment de la différence entre les fichiers, non ?
Hors ligne
#4 Le 12/05/2010, à 12:50
- auguste57
Re : [Résolu] Trouver des infos, puis les retranscrire !
C'est Ok, je viens de résoudre le problème
En comprenant ce que faisait le code, il va falloir remplacer
IPDECO=`cat /tmp/test.log`
par
IPDECO=`cat ${CWD}/IPDECONNECTER.log`
Il faut également savoir que chez moi, les IP connectées sont dans le désordre... donc afin d'éviter d'avoir des doublons lors de la différence, on peut remettre en ordre ce fichier :
sort -u /tmp/iptest/IPCONNECTER.log > /tmp/iptest/IPCONNECTER.log
Merci
Hors ligne
#5 Le 12/05/2010, à 17:39
- Totor
Re : [Résolu] Trouver des infos, puis les retranscrire !
Bonjour,
join -a 1 -j 1 fichier2.txt fichier1.txt | awk ' { if ($2!="") {print $1 " s'"'"'est connecté sur le serveur " strftime()} else {print $1 " ne s'"'"' est pas connecté au serveur"} }'
Avec :
fichier1.txt :
192.168.0.1 connect
192.168.0.2 connect
192.168.0.3 connect
et fichier2.txt
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
ces 2 ficheirs doivent être triés.
-- Lucid Lynx --
Hors ligne
#6 Le 12/05/2010, à 22:22
- wido
Re : [Résolu] Trouver des infos, puis les retranscrire !
c'est vrai que la deuxième partie du script est à chier ( je n'avais pas d'exemple tout fait)
Hors ligne