[..] Detecter si une IP est un poste informatique.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

[..] Detecter si une IP est un poste informatique.

#1

Message par Jerome »

Coucou,


Pour les besoin d'un de mes scripts, j'ai besoin de savoir si derrière une IP il y a un post informatique.


Pour le moment, je fais comme sa, mais c'est plutôt long :

Code : Tout sélectionner

$ping = Ping($strComputer & $for,50)
        if $ping > 0 Then
            If FileExists("\\" & $strComputer & $for & "\c$\") = 1 Then
En gros je test si il y a un c$.


C'est assez long comme étape et sa coince du coup pour ce que je veux faire, quelqu'un connaîtrait un moyen de savoir si l'ip concerner est un poste informatique ?



Jérôme :)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#2

Message par mikell »

La ligne seule (sans le ping)

Code : Tout sélectionner

If FileExists("\\" & $strComputer & $for & "\c$\") = 1 Then...
ne suffirait pas ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#3

Message par Jerome »

Ba, au final, mon ping a un timout de 50 ms donc bon, c'est pas hyper gênant, c'est le fileexiste qui prend super longtemps.


Jérôme
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#4

Message par mikell »

Jerome a écrit :Ba, au final, mon ping a un timout de 50 ms donc bon, c'est pas hyper gênant, c'est le fileexiste qui prend super longtemps.
Là tu te trompes, teste ce script, tu verras que ton timeout ne sert à rien en cas d'échec du ping

Code : Tout sélectionner

$begin = TimerInit()
$ping = Ping("www.nonexists.argh", 50)
Msgbox(0,"", "@error = " & @error &@crlf & Round(TimerDiff($begin)/1000) & " secondes")
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#5

Message par sksbir »

En absolu, c'est impossible : le ping te dis seulement si la machine est active, et encore, à condition d'avoir autorisé le départ de trames ICMP depuis la carte réseau.

Tu peux éventuellement deviner à quoi tu as affaire en supposant que tes 'postes informatiques' ( sous entendu : PC sous windows vu qu'il existe un C$ ) offrent un certain nombres de services réseaux qui permettent de les distinguer les uns des autres : les serveurs sous UNIX offrent un service ssh que n'offrent pas les PC sous windows...

Bref, tout ceci dépend principalement de ce qui existe sur ton réseau. La meilleure méthode consiste à tenir un inventaire du parc informatique :P


Sinon, pour la méthode que tu as retenu : je ne crois pas que tu puisses changer le timeout en cas de non-réponse...

Par contre, tu pourrais tenter d'écrire un programme qui se forke en autant de sous-programmes qui tournent en // et qui auscultent chacun un nom de machine ( avec des limites sur le nombre de forks ), en te basant sur ceci : [Ex] Script réentrant
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#6

Message par Jerome »

mikell a écrit :
Jerome a écrit :Ba, au final, mon ping a un timout de 50 ms donc bon, c'est pas hyper gênant, c'est le fileexiste qui prend super longtemps.
Là tu te trompes, teste ce script, tu verras que ton timeout ne sert à rien en cas d'échec du ping

Code : Tout sélectionner

$begin = TimerInit()
$ping = Ping("www.nonexists.argh", 50)
Msgbox(0,"", "@error = " & @error &@crlf & Round(TimerDiff($begin)/1000) & " secondes")

Coucou,


Peut être, mais au final toujours non, puisque toute ma plage d'adresse IP contient des éléments informatiques qui vont répondre au ping.


Clairement ce qui me prend du temps, c'est le fileexists.


Partager en sous script, sa m’intéresse pas trop dsl ..


Exemple :

Code : Tout sélectionner

local $timerping = TimerInit()
        $ping = Ping($strComputer & $for,50)
        ConsoleWrite($strComputer & $for & " ping en : " & TimerDiff($timerping) & @crlf)
        if $ping > 0 Then
            local $timerexist = TimerInit()
            If FileExists("\\" & $strComputer & $for & "\c$\") = 1 Then
                ConsoleWrite($strComputer & $for & "existe en : " & TimerDiff($timerexist) & @crlf)
Résulat :

Code : Tout sélectionner

192.168.120.200 ping en : 15.2880851939911
192.168.120.200existe en : 154.053963114009
192.168.120.201 ping en : 2.06905558562314
192.168.120.201existe en : 2591.58565051781
192.168.120.202 ping en : 2.3490738580986
192.168.120.202existe en : 20.1276678013775
192.168.120.203 ping en : 2.52358626416274
192.168.120.203existe en : 60.085876072239
192.168.120.204 ping en : 2.35420657592402
192.168.120.204existe en : 49.8107452877373
192.168.120.205 ping en : 2.36561261553605
192.168.120.205existe en : 31.587315799589
192.168.120.206 ping en : 2.42891613538285
192.168.120.206existe en : 27.8752202078523
192.168.120.207 ping en : 2.16201480846123
192.168.120.207existe en : 7471.12931768501
192.168.120.208 ping en : 2.65019330385632
192.168.120.208existe en : 126.488416881623
192.168.120.209 ping en : 2.79447970494857
192.168.120.209existe en : 141.800454758799
Parfois on a 7seconde, et c'est sa qui me fou dedans.


Jérôme
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#7

Message par sksbir »

Jerome a écrit :.... puisque toute ma plage d'adresse IP contient des éléments informatiques qui vont répondre au ping.
C'est de ça que tu pars ? d'une plage d'adresse IP ?
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#8

Message par Jerome »

J'ai édit mon post d'avant.


Mais oui, je fait mon test sur un range de 10 / 20 / 30 adresse IP, et toutes répondent.


Exemple : J'ai une imprimante en 192.168.120.53

Si je test dessus, le ping est aux alentours de "ping en : 3.18228505175776"
Par contre, le temps qu'il me fasse le fileexiste, sur une imprimante (ce qui n'est pas possible), la y a facilement 12/20 secondes.




Jérôme
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#9

Message par sksbir »

......
Modifié en dernier par sksbir le lun. 12 mars 2012 09:16, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#10

Message par mikell »

Si c'est le FileExists qui est long, _Net_Share_ShareEnum() ou un check wmi Win32_Share n'irait pas ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#11

Message par Jerome »

Je viens de test.


_Net_Share_ShareCheck => 38681.2576527397
Win32_Share => pareil sensiblement.


Donc raté :p


Faite le test chez vous, essayer juste de voir sur une adresse IP bidon le temps qu'il met pour vous dire que le répertoire existe pas.

Je tiens a préciser que si ya un autre moyen que par un check du c$ de faire sa, je suis preneur :)

Une belle fonction IsComputer() xD ?

Jérôme
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#12

Message par mikell »

Jerome a écrit :Faite le test chez vous, essayer juste de voir sur une adresse IP bidon le temps qu'il met pour vous dire que le répertoire existe pas
Hm je pensais que si le but était juste de savoir si l'IP correspondait ou non à un poste, un tri des constantes renvoyées par _Net_Share_ShareEnum suffirait à avoir le renseignement, sans test de présence de répertoire :(
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#13

Message par Jerome »

Oui mais moi mon but c'est de lister tous les postes de mon réseau.

Donc avant d'envoyer du class WMI sur une IP, jregarde si c'est un PC déjà ^^



Jérôme
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#14

Message par Iste »

Bah comme dit, je pense qu'il faut plutôt essayer de voir si il y aurait pas un soft réseau commun a toute ces machines que l'on pourrait exploiter.
Pas de bureau distant par exemple ?
Signez ici
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#15

Message par Jerome »

Nop, y'a vraiment rien de commun à tous ces postes, hormis qu'il sont sur le même sous réseau ^^


Jérôme
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#16

Message par Iste »

Bah sinon tu peux essayer ca, faut le mettre en double avec un ping quand meme

Code : Tout sélectionner

TCPStartup()
opt("TCPTimeout", 1000)

$begin = TimerInit()

$ip = "192.168.1.1"

$soc = TCPConnect($ip, 139)
$error = @error
TCPCloseSocket($soc)

Msgbox(0,"", "error = " & @error & @CRLF & TimerDiff($begin)) ;if $error == o then c'est ok

TCPShutdown()
Ca teste juste d'ouvrir une connexion sur un des port de partage, si ca marche -> pc, si ca marche pas -> pas pc, mais si ca tape dans le vide -> tres lent :s
Ca fait bien la dif entre mon ordi et mon tel, mais quand je tape mon routeur, c'est parti pour 10secondes :s

a voir donc si tes "pas pc" répondent comme mon tel, ou comme mon routeur...
Signez ici
SurPriseS
Niveau 6
Niveau 6
Messages : 293
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#17

Message par SurPriseS »

http://www.nirsoft.net/utils/wake_on_lan.html

En analysant les résultat de ce logiciel, y'a surement moyen de savoir qui est quoi, au moins pour beaucoup de machine je pense ;)
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Detecter si une IP est un poste informatique.

#18

Message par Jerome »

Effectivement,


Il y a des soft qui te check une plage de 250 ip en 10 s chrono, et c'est terrible (advanced ip scanner que j'utilise).

Le but de mon script est de faire la même, sauf que je peux choisir ce que je veux en retour (dans mon cas, treeview avec toute les cartes réseaux présentes, IP, gateway, mask, MAC adresse, type, DHCP ou non, interface).

Pas encore test ton idée Iste, mais c'est vrai que du 10 s, sa va patauger, mais c'est toujours mieux que 36 s.

Je ne pourrait tester que lundi maintenant.



Jérôme
Répondre