Page 1 sur 1

PB et le CMD windows

Publié : lun. 26/avr./2010 20:12
par Le psychopathe
Voilà ma petite contribution au forum :
Seul soucis, le forum ne garde pas les caractères spéciaux.

Code : Tout sélectionner

Procedure ping(ip.s, mode.s) ; fait un ping d'une machine avec 4 paquets
If mode = "-t"
requete.l = RunProgram("ping"," -t "+ ip , "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 
EndIf
If mode = ""
requete.l = RunProgram("ping", ip , "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 
EndIf
If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    Output = ReplaceString(Output, "ÿ", " ",#PB_String_NoCase )
    Output = ReplaceString(Output, "requˆte", "requête",#PB_String_NoCase )
    Output = ReplaceString(Output, "‚", "é",#PB_String_NoCase )
    Output = ReplaceString(Output, "re‡us", "reçu",#PB_String_NoCase )
    Debug Output
    If FindString(Output,"Paq",1) 
     Break 
    EndIf 
  Wend 
  CloseProgram(requete) 
  EndIf
EndProcedure


Procedure ipconfig(complet.l) ; donnes les informations réseau du pc
If complet = 1
requete.l = RunProgram("ipconfig","/all" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 
EndIf
If complet = 0
requete.l = RunProgram("ipconfig","" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 
EndIf
If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    Output = ReplaceString(Output, "ÿ", " ",#PB_String_NoCase )
    Output = ReplaceString(Output, "requˆte", "requête",#PB_String_NoCase )
    Output = ReplaceString(Output, "‚", "é",#PB_String_NoCase )
    Output = ReplaceString(Output, "re‡us", "reçu",#PB_String_NoCase )
    Output = ReplaceString(Output, "h“te", "hôte",#PB_String_NoCase )
    Output = ReplaceString(Output, "Contr“leur", "contrôleur",#PB_String_NoCase )
    
    Debug Output
  Wend 
  CloseProgram(requete) 
  EndIf

EndProcedure


Procedure trace(ip.s) ; permet de savoir par quel vlan on passe pour acceder à une ip
requete.l = RunProgram("tracert", ip , "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 
If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    Output = ReplaceString(Output, "ÿ", " ",#PB_String_NoCase )
    Output = ReplaceString(Output, "requˆte", "requête",#PB_String_NoCase )
    Output = ReplaceString(Output, "‚", "é",#PB_String_NoCase )
    Output = ReplaceString(Output, "re‡us", "reçu",#PB_String_NoCase )
    If FindString(Output,"Itinéraire déterminé.",1) 
     Break 
    EndIf 
    Debug Output
   Wend 
  CloseProgram(requete) 
  EndIf
EndProcedure


Procedure.s mac() ; renvoie l'adresse Mac de la carte réseau.
requete.l = RunProgram("ipconfig","/all" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 

If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    Output = ReplaceString(Output, "ÿ", " ",#PB_String_NoCase )
    Output = ReplaceString(Output, "requˆte", "requête",#PB_String_NoCase )
    Output = ReplaceString(Output, "‚", "é",#PB_String_NoCase )
    Output = ReplaceString(Output, "re‡us", "reçu",#PB_String_NoCase )
    Output = ReplaceString(Output, "h“te", "hôte",#PB_String_NoCase )
    Output = ReplaceString(Output, "Contr“leur", "contrôleur",#PB_String_NoCase )
    If FindString(Output,"Adresse physique",1) 
        Output = Right(Output, Len(Output)-FindString(Output, ":", 1))
     ; Debug output
     Break 
    EndIf 
  Wend 
  CloseProgram(requete) 
  ProcedureReturn output
  EndIf
EndProcedure


Procedure NetView() ; affiche toutes les machines sur le même domaine
requete = RunProgram("NET","VIEW" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 

If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    
    Debug Output ; à cet endroit mettez ce qu'il vous faut pour ajouter dans un gadget par exemple.
  Wend 
  CloseProgram(requete) 
  EndIf
EndProcedure




netview()

; trace("www.google.fr")

; ping("127.0.0.1","")

; ipconfig(1)

Debug mac()

Re: PB et le CMD windows

Publié : lun. 26/avr./2010 20:21
par SPH
Détermination de l'itinéraire vers www.l.google.com [209.85.227.104]

avec un maximum de 30 sauts :



1 <1 ms <1 ms <1 ms livebox.home [192.168.1.1]

2 67 ms 41 ms 40 ms AReims-157-1-48-1.w86-208.abo.wanadoo.fr [86.208.215.1]

Re: PB et le CMD windows

Publié : lun. 26/avr./2010 20:36
par Le psychopathe
Détermination de l'itinéraire vers http://www.l.google.com [209.85.227.105]
avec un maximum de 30 sauts :

1 <1 ms <1 ms <1 ms ***.***.1.1
2 21 ms 21 ms 20 ms **.***.***.254
3 21 ms 23 ms 21 ms ***.***.***.254
4 * 26 ms 21 ms th2-crs16-1-be1104.intf.routers.proxad.net [212.27.56.153]
5 22 ms 22 ms 22 ms cbv-6k-1-po21.intf.routers.proxad.net [212.27.58.2]
6 42 ms 42 ms 43 ms 74.125.50.116
7 22 ms 22 ms 25 ms 209.85.250.142
8 32 ms 32 ms 31 ms 216.239.43.233
9 29 ms 30 ms 29 ms 216.239.49.45
10 * * * Délai d'attente de la demande dépassé.
11 29 ms 35 ms 29 ms wy-in-f105.1e100.net [209.85.227.105]

Re: PB et le CMD windows

Publié : lun. 26/avr./2010 21:03
par SPH
... ce qui veux dire concretement pour toi et pour moi :?:

Re: PB et le CMD windows

Publié : mar. 27/avr./2010 8:08
par Le psychopathe
Cela veut dire que cela fonctionne xD
Sinon si tu veux savoir à quoi cela peut servir :
Je m'en sert au boulot pour savoir par quel vlan un pc passe. Comme ça je sais s il est sur le bon réseau ou pas.
Donc une commande à utiliser plus en local, google étant qu'un exemple ;)

Re: PB et le CMD windows

Publié : mar. 27/avr./2010 10:09
par Patrick88
Génial ! Juste les commandes qu'il me manquait... et entre autres, qui m'ont fait programmer l'appli avec windev...

cool, merci

pat

Re: PB et le CMD windows

Publié : mar. 27/avr./2010 14:08
par Patrick88
petit ajout avec Net View, j'utilise également le ping de droppy http://www.purebasic.fr/french/viewtopi ... ilit=ping#

Net View = permet d'obtenir la liste des pécékk connecté au réseau local
= permet d'obtenir l'IP quand on a que le HOSTNAME...

Code : Tout sélectionner

Procedure.s NetView()

Protected Output.s = "", Output2.s = "",Output3.s = ""
Protected requete.l =  0

requete = RunProgram("NET","VIEW" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 

If requete 
  While ProgramRunning(requete) 
    Output = ReadProgramString(requete)
		If Left(Output,1) = "\"
       Output2 = Output2+RTrim(Output)+","
    EndIf
	Wend 
	CloseProgram(requete) 
;\\ACER      Portable,\\EEEPC            eeePC,\\PCPAT             Post1,
output=""
For requete.l = 1 To CountString(Output2,",")
    Output3 = StringField(output2,requete,",")
    Output = output+RTrim(Mid(Output3,1,FindString(Output3,"  ",1)))+"="+LTrim(Mid(Output3,FindString(Output3,"  ",1)))+","
Next
;\\ACER=Portable,\\EEEPC=eeePC,\\PCPAT=Post1,
Output = Left(Output,Len(Output)-1)
;\\ACER=APortable,\\EEEPC=eeePC,\\PCPAT=Post1
	ProcedureReturn output
	EndIf

EndProcedure

Output2.s = NetView()
Debug output2 ; renvoie la chaine "\\ACER=APortable,\\EEEPC=eeePC,\\PCPAT=Post1"

; et tout ça pour obtenir l'ip quand on a que le HOSTNAME
output2 = StringField(StringField(output2,1,","),1,"=") ; => "\\ACER"
Debug HostnameToIP(RemoveString(output2,"\\")) ; => Debug HostnameToIP("ACER")

Re: PB et le CMD windows

Publié : mer. 28/avr./2010 20:29
par Le psychopathe
Je vais l'ajouté plus haut dans mon post mais je vais le modifié un peu car ton code n'est pas fonctionnel niveau entreprise quand on liste 2000 pc ^^.
Je vais arranger ça plus tard.
@++

Re: PB et le CMD windows

Publié : jeu. 29/avr./2010 10:08
par Patrick88
j'ai essayé au taf, ça marche avec 146 postes, et c'est largement bon pour moi...
je suis preneur de ta version

pat

Re: PB et le CMD windows

Publié : jeu. 29/avr./2010 12:06
par Le psychopathe
Et bien le soucis de ton code c'est que à mon taf on a des commentaires avec le "\" donc après tout se décale.
On ne peut jamais savoir comment sont appelées les machines et surtout les commentaires donc il faut mieux donner un code simple qui pourra s'adapter à toutes les config.

Code : Tout sélectionner

Procedure NetView()
requete = RunProgram("NET","VIEW" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 

If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    
    Debug Output ; à cet endroit mettez ce qu'il vous faut pour ajouter dans un gadget par exemple.
  Wend 
  CloseProgram(requete) 
  EndIf

EndProcedure

netview()