Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1125 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBS : récupérer informations routeurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBS : récupérer informations routeurs

n°1490683
slr56
Tout problème a sa solution.
Posté le 13-12-2006 à 08:05:34  profilanswer
 

Salut tout le monde! :pt1cable:  
 
Je suis en train de faire un script afin de récupérer des informations sur des routeurs.
Je voudrais savoir si le VBS supporte l'ADO comme VB et VBA. Si oui comment résoudre mon problème qui est à la ligne 30. Lorsque que j'exécute le code, il me dit : Objet requis :"
Je suis sûr qu'il y a d'autres erreurs mais je les prend les unes après les autres :wahoo:  

Code :
  1. Option explicit
  2. 'DECLARATION CONSTANTES
  3. const port1 = "show port status"
  4. const port2 = "show interface status"
  5. Const MoteurDeRecherche = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
  6. Const chemin_bdd ="H:\bd_routeurs.mdb"
  7. 'DECLARATION VARIABLES
  8. Dim WshShell,FSO,objSHELL
  9. Dim commande,nbports,ligne
  10. Dim objConnection,objRecordset,cnx
  11. 'Déclaration des objets
  12. Set FSO=CreateObject("Scripting.FileSystemObject" )
  13. Set objSHELL=wscript.Createobject("wscript.Shell" )
  14. 'UTILISATION TACHE PLANIFIEE WINDOWS (PROGRAMMES->ACCESSOIRES->OUTILS SYSTEMES->TACHESPLANIFIEES)
  15. 'POUR AUTOMATISER LE LANCEMENT DU SCRIPT
  16. 'OUVERTURE BASE ACCESS
  17. Set objConnection=Createobject("ADODB.Connection" )
  18. Set objRecordset=CreateObject("ADODB.Recordset" )
  19. cnx.ConnectionString =MoteurDeRecherche & chemin_bdd
  20. cnx.Open
  21. objSHELL.run "h:\lecture_routeurs.bat"
  22. 'L35 LANCEMENT DU SERVICE TELNET
  23. objSHELL.run "hypertrm.exe"
  24. wscript.Sleep(50)
  25. 'ECRITURES EN TELNET
  26. DO WHILE ip_routeur<>"ZZZZZ"
  27. objSHELL.run "hypertrm.exe"
  28. wscript.Sleep(5000)
  29. 'L45 ECRITURES DANS L'HYPERTERMINAL
  30. objSHELL.Sendkeys "cisco"
  31. wscript.Sleep(50)
  32. objSHELL.Sendkeys "{ENTER}"
  33. wscript.Sleep(50)
  34. objSHELL.Sendkeys "{DOWN}"
  35. wscript.Sleep(50)
  36. objSHELL.Sendkeys "{DOWN}"
  37. wscript.Sleep(50)
  38. objSHELL.SendKeys ip_routeur
  39. wscript.Sleep(50)
  40. objSHELL.Sendkeys "{ENTER}"
  41. wscript.Sleep(100)
  42. objSHELL.Sendkeys "{ENTER}"
  43. wscript.Sleep(50)
  44. if Nb_ports=80 then
  45.  commande=port1
  46. else  commande=port2
  47. end if
  48. objSHELL.SendKeys commande.value
  49. wscript.Sleep(50)
  50. objSHELL.Sendkeys "{ENTER}"
  51. wscript.Sleep(50)
  52. objSHELL.Sendkeys "%+(T)"
  53. wscript.Sleep(50)
  54. objSHELL.Sendkeys "{DOWN}"
  55. wscript.Sleep(50)
  56. objSHELL.Sendkeys "{DOWN}"
  57. wscript.Sleep(50)
  58. objSHELL.Sendkeys "{ENTER}"
  59. wscript.Sleep(50)
  60. objSHELL.Sendkeys "h:\lecture_logs_routeurs"& ip_routeur & ".txt"
  61. objSHELL.Sendkeys "{ENTER}"
  62. wscript.Sleep(50)
  63. objSHELL.Sendkeys "{BACKSPACE}"
  64. wscript.Sleep(50)
  65. objSHELL.Sendkeys "{BACKSPACE}"
  66. wscript.Sleep(50)
  67. objSHELL.Sendkeys "{BACKSPACE}"
  68. wscript.Sleep(1500)
  69. objSHELL.Sendkeys "%+(F4)"
  70. objSHELL.Sendkeys "{UP}"
  71. objSHELL.Sendkeys "{ENTER}"
  72. objSHELL.Sendkeys "{ENTER}"
  73. objSHELL.Sendkeys "{RIGHT}"
  74. objSHELL.Sendkeys "{ENTER}"
  75. 'FIN DES ENREGISTREMENTS
  76. 'L100 objRecordset.Open "INSERT INTO resultat (N_port, status, vlan, level, duplex, speed, type) VALUES "
  77. If  objRecordset.EOF = True AND objRecordset.BOF = True Then
  78.   objRecordset.close
  79.  While objRecordset.EOF=false
  80.   rs.MoveNext
  81.  Wend
  82.  ObjRecordset.Update
  83. End if
  84. 'L110
  85. 'FERMETURE D ACCESS
  86. LOOP
  87. 'FIN SCRIPT


Message édité par slr56 le 20-12-2006 à 15:21:03
mood
Publicité
Posté le 13-12-2006 à 08:05:34  profilanswer
 

n°1490866
slr56
Tout problème a sa solution.
Posté le 13-12-2006 à 14:49:44  profilanswer
 

up!

n°1491130
kiki29
Posté le 14-12-2006 à 09:19:52  profilanswer
 
n°1491286
slr56
Tout problème a sa solution.
Posté le 14-12-2006 à 12:22:51  profilanswer
 


 
Merci kiki29,  :bounce: c'est ce que je veux faire mais j'ai des difficultés à l'appliquer. :sweat:  :sweat:  Je suppose que les arguments en questions correspondent aux champs de la table de l'exemple, non? :heink:  
 
Voici le code type :

Code :
  1. Call UpdateMDB(WScript.Arguments(0),WScript.Arguments(1)
  2.  
  3. Sub UpdateMDB(PathMDB,PathFile)
  4. Dim DBAccess, Rs, NameField, DataToAdd


 
Mon code personnalisé est le suivant :  
 

Code :
  1. Call MajMDB(WScript.Arguments(0),WScript.Arguments(1)
  2.  
  3. Sub MajMDB(chemin_bdd,chemin_fichier)
  4. Dim DBAccess, RS, N_port, port,Status, Status2, vlan, vlan2, Level, Level2, Duplex, Duplex2, Speed, Speed2, Type, Type2


 
j'ai déclaré chemin_bdd et chemin_fichier en constantes. A l'exécution, il me dit qu'il y a une erreur de syntaxe ici "Sub MajMDB(chemin_bdd,chemin_fichier) " :heink:  :pfff:  :pfff:
 
Merci de m'aider :sweat: parce que là.... :cry:


Message édité par slr56 le 14-12-2006 à 12:25:01
n°1491358
slr56
Tout problème a sa solution.
Posté le 14-12-2006 à 14:50:45  profilanswer
 

J'avance dans mon codage script. Je n'ai pas encore résolu le problème de la base de données mais je vais voir après...:)  
 
Maintenant je souhaite convertir ceci en VBS  :p :
Le principe du code est d'ouvrir une liste de fichiers texte situés dans un même répertoire, de les lire un par un et de supprimer la chaîne de caractères inclus dans la constante "carasuppr".
 

Code :
  1. constante carasuppr c'est "--More--         "
  2. var ligne, fichier, nbligne
  3. ligne:=0
  4. fichier:=0
  5. nbligne:=1
  6. POUR CHAQUE fichier DANS collectionfichier FAIRE
  7.  fichier=fichier+1
  8.  TANT QUE ligne DANS collectionligne <> "" et nbligne<95 FAIRE
  9.  nbligne=nbligne+1
  10.   SI ligne inclu carasuppr ALORS
  11.    effacer carasuppr et remplacer par un " " (espace)
  12.   FINSI
  13.  REFAIRE
  14. REFAIRE


 
Pour le moment j'obtiens ceci, en espérant que ce soit correct  ;) :  

Code :
  1. const carasuppr="--More--         "
  2. Dim ligne, fichier, nbligne
  3. ligne=0
  4. fichier=0
  5. nbligne=1
  6. Set colobjFileText=objFileText.files
  7. For each objFileTxt in colobjFileText
  8. Set objFileTxt=objFSO.OpenTextFile(creation_rep)
  9. fichier=fichier+1
  10. Do While ligne


 
Là, je bloque pour matérialiser les lignes. Comment faire comprendre au code ce qu'est une ligne??? Et comment dire "inclure dans" en VBS??? :heink:
De plus, je souhaite ajouter un " " (espace)  pour remplacer la chaine de caractères que je supprime. :ouch:  
Merci de vos réponses


Message édité par slr56 le 15-12-2006 à 09:11:28
n°1491627
slr56
Tout problème a sa solution.
Posté le 15-12-2006 à 09:01:00  profilanswer
 

up!

n°1492423
slr56
Tout problème a sa solution.
Posté le 17-12-2006 à 18:45:53  profilanswer
 

up! please!!!!


Message édité par slr56 le 18-12-2006 à 10:33:28
n°1492822
slr56
Tout problème a sa solution.
Posté le 18-12-2006 à 16:29:21  profilanswer
 

j'ai résolu mon problème de connection à la base de données par moi-même enfin!!!!  Mon ADO fonctionne maintenant j'aimerais savoir comment faire appel à mes variables de ma base de données dans mon ADO. PAr exemple le champs "ip_routeur" . J'ai essayé de mettre "& ip_routeur" dans mon code mais ça ne fonctionne pas. Comment faire?


Message édité par slr56 le 19-12-2006 à 07:43:43
n°1493027
jpcheck
Pioupiou
Posté le 18-12-2006 à 23:05:53  profilanswer
 

je ne sais pas répondre à ta question, mais si tu peux mettre la solution avec laquelle tu as résolu ton premier pb ca serait cool ;)

n°1493084
slr56
Tout problème a sa solution.
Posté le 19-12-2006 à 07:58:02  profilanswer
 

jpcheck a écrit :

je ne sais pas répondre à ta question, mais si tu peux mettre la solution avec laquelle tu as résolu ton premier pb ca serait cool ;)


 
ok  ;) Jpcheck je vais la mettre, voici ma solution pour CONNECTER ma base via mon script :  
 

Code :
  1. Set conn = CreateObject ("ADODB.Connection" )
  2. Strconn= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' "& chemin_bdd &"'"
  3. conn.Open Strconn
  4. Set rs = CreateObject("ADODB.Recordset" )
  5. If ErrNumber <>0 Then DataBaseError


 
Tout simple. Mon erreur était dûe au driver OLEDB qui était mal saisi. :pt1cable: Il m'en a fallu du temps pour résoudre le problème qui était tout bête mais j'ai réussi!!!  ;)  :bounce:  
 
 
 
Maintenant si quelqu'un peut me dire comment on écrit les variables correspondants aux champs de ma BD, de manière à ce que mon script lise directement les informations saisies dans mes champs et non pas le libellé de mon champs.  
 Par exemple, le champ "ip_routeur"  j'ai essayé avec "& ip_routeur" mais ça ne marche pas. Peut être que j'utilise mal le "&".
 
 MERCI :jap:


Message édité par slr56 le 19-12-2006 à 08:19:37
mood
Publicité
Posté le 19-12-2006 à 07:58:02  profilanswer
 

n°1493113
slr56
Tout problème a sa solution.
Posté le 19-12-2006 à 09:42:17  profilanswer
 

Je me suis aperçu que pour récupérer les informations nécessaires, il fallait bien évidemment que j'utilise les requêtes SQL!!!! :pt1cable:  :pt1cable:  
Voici la déclaration de l'ADO

Code :
  1. 'CONNECTION A LA BASE DE DONNNEES
  2. Set conn = CreateObject ("ADODB.Connection" )
  3. StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & chemin_bdd & "'"
  4. conn.Open strConn
  5. Set rs = CreateObject ("ADODB.Recordset" )
  6. rs.Open"SELECT * FROM 00_Routeurs", conn, adOpenStatic, adLockOptimistic
  7. If Err.Number <>0 Then DataBaseError
  8. Set creation_rep=FSO.CreateFolder(ad_complete & "_" & Right("0" & Day(date),2) & "_" & Right("0" & Month
  9. (date),2) & "_" & Year(date))
  10. 'ECRITURES EN TELNET
  11. rs.movefirst
  12. DO WHILE (rs.open &"SELECT ip_routeur FROM 00_routeurs WHERE ip_routeur <> 'ZZZZZ'"&", conn ,
  13. adOpenStatic , adLockOptimistic" )
  14. id_ip=rs.open &"SELECT ip_routeur FROM 00_routeurs WHERE ip_routeur <> 'ZZZZZ'", conn ,
  15. adOpenStatic , adLockOptimistic
  16. objSHELL.run "hypertrm.exe"
  17. wscript.Sleep(5000)


 
Voici ce que j'ai fait. Le problème est que ça bloque à la ligne 15: Il me dit que " l'opération n'est pas permise car l'objet est ouvert!"  :ouch:  :ouch:  Si il n'est pas ouvert, je ne peux pas réaliser ma requête :pfff:  :o  Alors comment faire????  
nb :TOUTES mes déclarations sont faites précédemment.
 


Message édité par slr56 le 20-12-2006 à 11:13:54
n°1494193
slr56
Tout problème a sa solution.
Posté le 20-12-2006 à 14:08:44  profilanswer
 

svp!!!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBS : récupérer informations routeurs

 

Sujets relatifs
Récupérer <windows.h>recuperer aleatoirement des donnees d'un tableau [RESOLU]
Récupérer les namespaces avec PHP[PHP] Recuperer variables d'un formulaire généré par une requete
Select multiple.. recuperer les valeursRécupérer et redéfinir la position du curseur
[HTML] Informations sur les input type FILE [Liens inside]Recherche informations pour PL7pro(tableaux, graphiques, enre ! please
mysql - recuperer l'espace non utilisé de la base[C# .Net] Recuperer un chaine contenu dans un SubItems d'une Listview
Plus de sujets relatifs à : VBS : récupérer informations routeurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR