> Tech > Quand de bons scripts dérapent

Quand de bons scripts dérapent

Tech - Par Karen Bemowski - Publié le 24 juin 2010
email

Vous venez de passer des heures à écrire un script chargé de supprimer automatiquement les anciens comptes utilisateur inactifs dans l’AD (Active Directory). Bien que vous soyez débutant en code VBScript, la suppression manuelle des anciens comptes d’AD chaque mois était une telle corvée que vous vous êtes résolu à écrire ce script. Plein d’espoir, vous l’exécutez sur votre réseau de test… pour le voir s’arrêter prématurément. Pas croyable ! Où est l’anomalie ? Les raisons sont multiples. Cependant, le principe de Pareto (c’est-à-dire, la règle des 80/20) veut que la plus grande partie des erreurs de script (80 % environ) provient d’un petit nombre de causes possibles (20 % environ).Plusieurs experts en scripting ont récemment parlé des erreurs courantes qu’ils trouvent quand ils examinent le code VBScript sur le terrain. D’après ces experts et à en croire divers articles, les erreurs de syntaxe VBScript les plus courantes (c’est-à-dire, celles qui surviennent quand le code transgresse les règles grammaticales du langage VBScript) et les erreurs à l’exécution (c’est-à-dire, les erreurs qui se produisent quand un script tente d’effectuer une action que le système ne peut pas exécuter) surviennent quand les auteurs de scripts utilisent des variables, des instructions de traitement d’erreurs, des guillemets et des caractères spéciaux et réservés.

Pendant plusieurs heures, vous avez produit des lignes de code qui capturent l’information pour chaque imprimante de votre réseau multisite. Votre tête est pleine de monikers WMI (Windows Management Instrumentation), de constantes VBScript, de strComputer, de colPrinters et de variables d’impression. Et vos yeux sont fatigués de fixer l’écran. Finalement, quand vous utilisez colPrinter dans la dernière instruction For Each… Next, vous savez que c’est enfin la dernière ligne droite. Vous bouclez rapidement le script et le testez, mais le script se termine de façon abrupte et votre espoir de rentrer tôt à la maison s’évanouit.

Que s’est-il produit ? Exactement ce que vous venez de lire. Le paragraphe précédent contient une erreur trop fréquente dans les scripts : la faute d’orthographe. Dans un cas, le nom de la variable de colonne comportait la lettre s (colPrinters) mais, dans l’autre cas, le s était absent (colPrinter). C’est peu, mais ça suffit.

« Il me semble que le problème le plus fréquent est le non usage du motclé Option Explicit, puis de voir le script échouer parce qu’il utilise une variable qui ressemble beaucoup à celle qu’il est supposé utiliser », déclare Michael Otey, président de TECA, une firme de développement et conseil en logiciel et directeur technique de Windows IT Pro. Ce même problème était aussi en tête du palmarès des autres experts en scripting, y compris Steve Seguis, CEO et architecte logiciel en chef de SCRIPTMATION, une firme d’automatisation de systèmes d’entreprise. Selon lui : « L’un des problèmes les plus courants que j’ai rencontré avec le code VBScript est celui de variables mal orthographiées ». Par exemple, on utilise une variable appelée oUser dans un endroit puis on essaie de la lire sous la forme oUsr dans un autre. Or, il est facile de corriger ce genre de problème en forçant la déclaration de variables à l’aide de Option Explicit ».

VBScript peut vous aider à éviter les fautes d’orthographe. Pour utiliser une variable dans le code VBScript, il suffit de lui attribuer une valeur. Inutile de définir explicitement (c’est-à-dire de déclarer) les variables que vous utilisez. Cependant, tout comme la consommation de légumes ou l’exercice physique quotidien, c’est dans votre intérêt même si ce n’est pas obligatoire. Pour déclarer des variables explicitement, il suffit de placer l’instruction Option Explicit au début du script pour bien signifier au moteur de scripting votre intention de n’autoriser que les variables que vous avez déclarées explicitement avec des instructions Dim, Private, Public et ReDim. Si le moteur de scripting rencontre une variable non déclarée, il vous envoie le message d’erreur Variable is undefined (numéro d’erreur 500), suivi du nom de la variable non déclarée.

Cette simple petite ligne peut vous épargner des dizaines d’heures de débogage laborieux. S’il y a plus d’une variable non définie, le message d’erreur ne mentionne que la première qu’il rencontre. En VBScript, toutes les chaînes doivent être mises entre guillemets (« »).

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Karen Bemowski - Publié le 24 juin 2010