Page 1 sur 1

[R] Créer un tableau Dim modifiable (évolutif)

Posté : mer. 29 oct. 2008 10:04
par Eddy
Bonjour à tous,

J'ai besoin de faire évoluer un script pour mettre à jour des machines distantes.
Pour l'instant, je mets à jour un peu plus d'une douzaine de matériels mais le nombre peut augmenter .
Pour le moment j'ai créé un tableau fixe, Dim[14], chacun des éléments étant traité à la suite dans une boucle.
Dim $mat[14]
$mat[0]="ip mat1"
$mat[1]="ip mat2"
etc...
For $element in $mat
Ici se passe la mise à jour...

Mais à présent, je souhaite créer un tableau évolutif en fonction des besoins en dimension, à partir d'une base ou d'un fichier. Ce qui me permettrait d'ajouter ou de retirer des éléments sans toucher au programme directement et donc sans modifier à chaque fois le tableau.

Merci bien pour vos réponses et pour votre aide.

Re: Créer un tableau Dim modifiable (évolutif)

Posté : mer. 29 oct. 2008 10:18
par jbnh
Oui il y a bien sur moyen , il suffit de détecter le nombre de matériel pour déterminer la longeur de l'array. Mais il nous faudrait plus d'info sur cette 'base' pour savoir de quoi il s"agit.

Je veux dire par la, comment est-il structuré

Re: Créer un tableau Dim modifiable (évolutif)

Posté : mer. 29 oct. 2008 11:01
par Eddy
Bonjour,

Voici les informations complémentaires :

En fait, le tableau contient chacune des adresses IP pour chaque matériel pour lancer une session telnet ou ssh. Ensuite le programme envoie les commandes de mise à jour.

Le tableau se présente ainsi :
Dim $mat[14]
$mat[0]="telnet <adresse ip1>"
$mat[1]="telnet <adresse ip2"
etc...
For $element in $mat
Ensuite quand la session est connectée j'envoie les identifiants + les commandes de mise à jour enregistrées dans des variables.

Pour plus d'efficacité, il faudrait que le tableau puisse varier en fonction des matériels à mettre à jour, et qui est variable. Je ne vois qu'un tableau basé sur un fichier ou une base (dans un premier temps il pourrait s'agir d'un simple fichier) plutôt que de modifier le tableau Dim à chaque fois. Ce fichier se présenterait comme cela s'il s'agit d'utiliser telnet :
Telnet <adresse ip1>
Telnet <adresse ip2>...

Merci bien.

Re: Créer un tableau Dim modifiable (évolutif)

Posté : mer. 29 oct. 2008 12:14
par ani
bonjour Eddy

suis pas doué dans ce domaine, je passe un tour ^^'

regarde cette exemple Tableau dynamique à partir d'un tableay statique

Re: [..] Créer un tableau Dim modifiable (évolutif)

Posté : mer. 29 oct. 2008 16:27
par Tlem
Une idée comme une autre serait d'utiliser un fichier .INI (qui permettra de créer le tableau automatiquement).

Code : Tout sélectionner

[Mat1]
ip="telnet <adresse ip1>"
[Mat2]
ip="telnet <adresse ip2>"
Cette solution à pour mérite de pouvoir évoluer rapidement.
Par exemple vous pouvez ajouter une machine indépendamment du script principal, ou au prix d'une modification mineure du script, ajouter une information par machine.

Code : Tout sélectionner

[Mat1]
ip="telnet <adresse ip1>"
Name="PC1"
[Mat2]
ip="telnet <adresse ip2>"
Name="PC2"
Les fonctions de lecture sont toutes faites :wink: :

Code : Tout sélectionner

IniReadSectionNames ( "filename" )
IniReadSection ( "filename", "section" )
IniRead ( "filename", "section", "key", "default" )
Vraiment trop simple. :mrgreen:

Re: [..] Créer un tableau Dim modifiable (évolutif)

Posté : mer. 29 oct. 2008 16:44
par Eddy
Merci Thierry et merci à chacun d'entre vous,

En effet la solution d'un fichier ".ini" est à essayer.

En ce qui concerne le lien "Tableau dynamique à partir d'un tableau statique", je n'en saisis pas encore toute la logique pour le mettre en pratique.

Re: [..] Créer un tableau Dim modifiable (évolutif)

Posté : mer. 29 oct. 2008 20:59
par Tlem
En ce qui concerne le tableau dynamique, aujourd'hui virtuellement tout tableau est dynamique !!!
En effet l'UDF Array.au3 permet de nombreuses manipulations sur les tableaux. ;)
Voici la liste des fonctions contenues dans l'UDF Array.au3 :
  • ;_ArrayAdd
    ;_ArrayBinarySearch
    ;_ArrayConcatenate
    ;_ArrayDelete
    ;_ArrayDisplay
    ;_ArrayFindAll
    ;_ArrayInsert
    ;_ArrayMax
    ;_ArrayMaxIndex
    ;_ArrayMin
    ;_ArrayMinIndex
    ;_ArrayPop
    ;_ArrayPush
    ;_ArrayReverse
    ;_ArraySearch
    ;_ArraySort
    ;_ArraySwap
    ;_ArrayToClip
    ;_ArrayToString
    ;_ArrayTrim
Ça donne de quoi faire. :lol:
Tant que les choses sont en mémoire pas de problème, mais en l'occurrence vous souhaitez gérer une liste de matériels et à partir de cette liste créer un tableau.
Donc le fichier .INI est tout indiqué, ou si votre liste de matériel doit devenir si grosse que la capacité normale d'un fichier .INI est dépassée, alors il faudra passer par une base de donnée (mais je pense pas que vous deviez allé jusque là ;) )

Re: [..] Créer un tableau Dim modifiable (évolutif)

Posté : jeu. 30 oct. 2008 23:14
par Eddy
Bonjour,

La méthode de Thierry, le fichier ".INI", a très bien fonctionnée. Après plusieurs tests, aucun problème rencontré. A terme, pour l'usage d'autres personnes, je pense automatiser la liste des matériels contenus dans ce fichier ".INI", afin d'y ajouter ou de supprimer des équipements réseaux. Je ne suis pas encore très familier avec Autoit, mais je pense qu'on doit pouvoir ajouter des sections supplémentaires en incrémentant le nombre associé au nom de la section : ex. [Mat1], [Mat2], ... [Mat20]...

Bien cordialement