Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/05/2010, à 13: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, à 13:52)

Hors ligne

#2 Le 11/05/2010, à 15: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, à 16:35)

Hors ligne

#3 Le 12/05/2010, à 10: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, à 13: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 smile

Hors ligne

#5 Le 12/05/2010, à 18: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, à 23: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) tongue

Hors ligne