VBS : récupérer informations routeurs

VBS : récupérer informations routeurs - VB/VBA/VBS - Programmation

Marsh Posté le 13-12-2006 à 08:05:34    

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
Reply

Marsh Posté le 13-12-2006 à 08:05:34   

Reply

Marsh Posté le 13-12-2006 à 14:49:44    

up!

Reply

Marsh Posté le 14-12-2006 à 09:19:52    

Reply

Marsh Posté le 14-12-2006 à 12:22:51    


 
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
Reply

Marsh Posté le 14-12-2006 à 14:50:45    

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
Reply

Marsh Posté le 15-12-2006 à 09:01:00    

up!

Reply

Marsh Posté le 17-12-2006 à 18:45:53    

up! please!!!!


Message édité par slr56 le 18-12-2006 à 10:33:28
Reply

Marsh Posté le 18-12-2006 à 16:29:21    

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
Reply

Marsh Posté le 18-12-2006 à 23:05:53    

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 ;)

Reply

Marsh Posté le 19-12-2006 à 07:58:02    

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
Reply

Marsh Posté le 19-12-2006 à 07:58:02   

Reply

Marsh Posté le 19-12-2006 à 09:42:17    

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
Reply

Marsh Posté le 20-12-2006 à 14:08:44    

svp!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed