Voici le script original.
Celui ci ping la liste des postes de la base et met a jour la base avec les informations récupérées.
Ce script est autonome (.EXE), il est exécuté à partir script principal.
Ceci a été fait ainsi pour des problèmes de base verrouillée lors des boucles de vérification des postes a partir de la base.
Il faut donc que je récupère dans un tableau la liste des postes et que je mette a jour la base a partir du tableau et non de la boucle de la requête, car le script principal effectue des accès avec des requêtes très longue aussi.
► Afficher le texte
Global $bdd,$requete,$row,$nombre_element,$nom_poste,$ping_resultat,$ip_resultat,$values,$x,$file
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=favicon.ico
#AutoIt3Wrapper_Compression=0
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <File.au3>
#include <Array.au3>
;#NoTrayIcon
;create_all_undeclared()
verification_bdd()
calcul_nombre_element()
TCPStartup()
ping_poste()
exit
;******************************** verification de la bdd *******************************
func verification_bdd()
ConsoleWrite("verification base" & @CRLF)
_SQLite_Startup ()
If @error > 0 Then Exit MsgBox(16, "SQLite Error", "SQLite.dll Impossible de charger!")
; verification si base de donnees est present
If FileExists(@scriptdir&"\data\data.sqli") Then
$bdd=_SQLite_Open (@ScriptDir & "\data\data.sqli")
If @error > 0 Then Exit MsgBox(16, "SQLite Error", "Impossible de charger la Base de donnée!")
Else
If @error > 0 Then Exit MsgBox(16, "SQLite Error", "Impossible de charger la Base de donnée!")
EndIf
endfunc
;******************************** *******************************
func calcul_nombre_element()
ConsoleWrite("calcul element" & @CRLF)
_SQLite_Query ( $bdd, "SELECT COUNT (*) FROM liste_ad", $requete)
While (_SQLite_FetchData ($requete, $row) = $SQLITE_OK)
$nombre_element = $row[0]
WEnd
_SQLite_QueryFinalize($requete)
endfunc
;******************************** ping la liste des postes *******************************
func ping_poste()
ConsoleWrite("demarrage ping poste" & @CRLF)
_SQLite_Query($bdd, "SELECT * FROM liste_ad ORDER BY nom_poste ASC", $requete)
While (_SQLite_FetchData ($requete, $row) = $SQLITE_OK)
$nom_poste = $row[0]
ConsoleWrite("--------------------------------------------------------------------" & @CRLF)
ConsoleWrite("poste : " & $nom_poste & @CRLF)
$ping_resultat = Ping($nom_poste)
ConsoleWrite("ping : " & $ping_resultat & @CRLF)
$ip_resultat = TCPNameToIP($nom_poste)
ConsoleWrite("IP : " & $ip_resultat & @CRLF)
$values = "ip='" & $ip_resultat & "', "
$values &= "status_ping='" & $ping_resultat & "'"
_SQLite_Exec(-1, "UPDATE liste_ad SET " & $values & " WHERE nom_poste='" & $nom_poste & "'")
ConsoleWrite("SQLite Error - Error Code: " & _SQLite_ErrCode() & @CRLF & "Error Message: " & _SQLite_ErrMsg() & @CRLF)
TrayTip("Ping", $nom_poste & @CRLF & "SQLite Error - Error Code: " & _SQLite_ErrCode() & @CRLF & "Error Message: " & _SQLite_ErrMsg(), 1, 1)
if _SQLite_ErrCode() = 5 then ; base locked
for $x = 1 to 100 ; boucle attente si base locked
TrayTip("Ping", $nom_poste & @CRLF & "SQLite Error - Error Code: " & _SQLite_ErrCode() & @CRLF & "Error Message: " & _SQLite_ErrMsg() & @CRLF & "tour d'attente : " & $x, 1, 1)
sleep (1000)
_SQLite_Exec(-1, "UPDATE liste_ad SET " & $values & " WHERE nom_poste='" & $nom_poste & "'")
if _SQLite_ErrCode() <> 5 then
ExitLoop
endif
next
endif
WEnd
_SQLite_QueryFinalize($requete)
_SQLite_Close ()
_SQLite_Shutdown ()
TCPShutdown ()
endfunc
Koumla