Bonjour à tous,
Ceci est la suite de mon 1er sujet sur comment créer un fichier de log. La première partie consistait à vous faire réfléchir sur le fichier de log. Si vous ne l'avez pas fait, je vous oblige à aller le voir là : http://cadernis.free.fr/viewtopic.php?f=10&t=1192.
On va récupérer les différentes informations et je vous expliquerez comment vous en servir.
Allez, on récupère !
Nous avions déjà validé un algorithme complet, le voici :
Cliquez pour révéler
Cliquez pour masquer
Algo Log
Début
ficher <-- ChercheFichier("log.txt", "")
Si fichier = FAUX alors
CreerFichier ("log.txt", "")
Fin Si
DateActu = DateSysteme()
NbFois = 0
Faire
ip = adresseip()
NbFois = NbFois + 1
Jusqu'a (ip <> "0.0.0.0") OU (ip <> "127.0.0.1") OU (NbFois = 4)
fich = OuvrirFichier ( "log.txt", 8+1 )
EcrireFichier (fich, "La date et l'heure actuelle : " & DateActu )
Fin
Maintenant je vous avais donner les fonctions essentielles pour y arriver :
Cliquez pour révéler
Cliquez pour masquer
#include <Date.au3>
FileOpen
FileWrite
Do...Until..OR...OR..OR
$ip = @IPAddress1
Et aussi le code complet pour trouver l'heure :
Cliquez pour révéler
Cliquez pour masquer
$tCur = _Date_Time_GetSystemTime()
FileWrite($file, "La date et l'heure actuelle : " & _Date_Time_SystemTimeToDateTimeStr($tCur))
Voila, on viens de tout récupérer, maintenant on y va.
Au travail !
Je vais vous expliquer chaque fonction et leur rôle. Mais avant on va transformer l'algorithme en langage autoIt.
Voici ce que ça nous donne :
Cliquez pour révéler
Cliquez pour masquer
$ficher = ChercheFichier("log.txt", "")
if $fichier = false then
CreerFichier ("log.txt", "")
EndIf
$DateActu = DateSysteme()
$NbFois = 0
Do
$ip = adresseip()
$NbFois = $NbFois + 1
Until ($ip <> "0.0.0.0") OR ($ip <> "127.0.0.1") OR ($NbFois = 4)
$fich = OuvrirFichier ( "log.txt", 8+1 )
EcrireFichier ($fich, "La date et l'heure actuelle : " & $DateActu )
Voila, on a bougé notre algorithme en langage AutoIt. C'était très facile comme vous avez pus le voir. Un algorithme ça sert à ça aussi.
Maintenant il nous reste certaines choses que l'on a pas pus transformer :
Cliquez pour révéler
Cliquez pour masquer
ChercheFichier("log.txt", "")
CreerFichier ("log.txt", "")
DateSysteme()
adresseip()
OuvrirFichier ( "log.txt", 8+1 )
EcrireFichier ($fich, "La date et l'heure actuelle : " & $DateActu )
Oula, ça correspond pas aux fonctions que je vous ait donner précédemment ça :fool:
A si, suis-je bête, faut les adapter :beee: .
#include <Date.au3>
Vous trouverez l'explication de ce petit morceau un peu plus bas. Je voua aurais bien donner un lien pour vous renseigner mais je n'ai pas trouver de tutoriel qui explique les expliquent.
FileOpen
Allez, un petit tour sur la doc des "files" que vous avez déjà dû lire : http://cadernis.free.fr/viewtopic.php?f=10&t=850.
Comme son nom l'entend, "FileOpen" sert à ouvrir un fichier. (file = fichier, open = ouvrir). Donc notre "FileOpen" correspond à "OuvrirFichier".
Mais ce n'est pas tout, il nous sert aussi pour notre "ChercherFichier" et "CreerFichier" car vous avez remarqués que l'on lui met l'endroit de recherche et un mode en plus du nom de fichier à rechercher. Et oui, une fonction 3 en 1, c'est bien ça :biggrin: .
FileWrite
Comme toujours, la documentation sur les fichiers : http://cadernis.free.fr/viewtopic.php?f=10&t=850.
"FileWrite" sert à écrire dans un fichier (File = fichier, Write = Écrire).
Cela correspond à notre "EcrireFichier" parfaitement.
Ainsi on l'utilise :
Cliquez pour révéler
Cliquez pour masquer
EcrireFichier ($fich, "La date et l'heure actuelle : " & $DateActu )
FileWrite($fich, "La date et l'heure : " & _Date_Time_SystemTimeToDateTimeStr($DateActu))
hum...qu'est-ce que ce barbarisme ? en fait _Date_Time......Str est une fonction intrinsèque à autoIt qui permet de retourner la date système en format chaine de caractère.
$ip = @IPAddress1
Ceci est faux en réalité. Je vais vous montrer comment faire. Pressez sur votre clavier les touches "Windows" et "R". Vous obtiendrez "l'exécuter". Tapez "cmd" dedans et validez. L'invite de commandes s'ouvrira. Tapez dedans l'invite de commande "ping 127.0.0.1". Vous verrez apparaitre 4 lignes sous la forme :
"Réponse de 127.0.0.1 : octet = ....".
Pour faire simple, comprenez que si on marque @IPAddress1 il ne testera pas bien. Pour remédier à cela, on devrais changer le "1" par "1", puis "2" puis "3" puis "4".
Vous pensez "rien de plus simple, à la place du 1 on met & $NbFois" ! raté malheureusement, cela serais trop simple. Allez, on réfléchis....
Cliquez pour révéler
Cliquez pour masquer
Après réflexion on obtient :
Selon NbFois =
1 : ip = adresseip()
2 : ip = adresseip()
3 : ip = adresseip()
4 : ip = adresseip()
Fin Selon
Et en Programmation
Select
Case $nbFois = 1
$ip = @IPAddress1
Case $NbFois = 2
$ip = @IPAddress2
Case $NbFois = 3
$ip = @IPAddress3
Case $NbFois = 4
$ip = @IPAddress4
EndSelect
Le "Select" et le "EndSelect" sont le début et la fin de vos "Case". Les "Case" correspondent au différentes actions à mener suivant la véracité de l'argumentation. On aurais pus prendre un "switch" à la place du Select mais je ne veut pas vous montrer de chose trop compliquées.
Plus de fonction à définir
Maintenant on refais le programme en incluant tout ce que l'on a vus.
Cliquez pour révéler
Cliquez pour masquer
$DateActu = _Date_Time_GetSystemTime()
$NbFois = 0
Do
$NbFois = $NbFois + 1
Select
Case $nbFois = 1
$ip = @IPAddress1
Case $NbFois = 2
$ip = @IPAddress2
Case $NbFois = 3
$ip = @IPAddress3
Case $NbFois = 4
$ip = @IPAddress4
EndSelect
Until ($ip <> "0.0.0.0") OR ($ip <> "127.0.0.1") OR ($NbFois = 4)
$fichier = FileOpen( "log.txt", 9 )
FileWrite($file, "La date et l'heure : " & _Date_Time_SystemTimeToDateTimeStr($DateActu))
FileWrite($file, "L'adresse IP est : " & $ip)
FileWrite($file, @CRLF)
FileWrite($file, @CRLF)
Eh bam ! ça ne fonctionne pas :focus:
Vous ne vous rappelez pas ? la fonction "include"... on ne l'as pas mise. Elle se met tout en haut du programme (ou ailleurs mettez celle là tout en haut). De plus certaines varaibles ne correspondent pas. Le lexique sert aussi à combler ces problèmes.
Et voici le script entièrement fonctionnel. Il n'est pas très léger et vous pouvez l'améliorer fortement l'améliorer mais c'est un début convenable :
Cliquez pour révéler
Cliquez pour masquer
#include <Date.au3>
local $DateActu, $file, $ip, $nbfois
$DateActu = _Date_Time_GetSystemTime()
$NbFois = 0
Do
$nbfois = $nbfois + 1
Select
Case $nbfois = 1
$ip = @IPAddress1
Case $nbfois = 2
$ip = @IPAddress2
Case $nbfois = 3
$ip = @IPAddress3
Case $nbfois = 4
$ip = @IPAddress4
EndSelect
Until ($ip <> "0.0.0.0") OR ($ip <> "127.0.0.1") OR ($nbfois = 4)
$file = FileOpen( "log.txt", 9 )
FileWrite($file, "La date et l'heure : " & _Date_Time_SystemTimeToDateTimeStr($DateActu))
FileWrite($file, "L'adresse IP est : " & $ip)
FileWrite($file, @CRLF)
FileWrite($file, @CRLF)
EDIT : correction des problèmes de casse.
Par : sheik54