Rechercher : dans
Par :

Passer argument a un script a partir d'un fic

Dernière réponse le 5 fév 2008 à 16:49:32 david79, le 5 fév 2008 à 14:24:23 
 Signaler ce message aux modérateurs

Bonjour,


Ma question est la suivante :

j'ai un script qui appelle différents arguments

./script arg1 arg2
./script arg3 arg4
./script arg5 arg6
......

ce script est récurrent et et doit etre lancé à une date donnée bien précise

Je voudrais donc éviter un nombre incalculable de ligne dans ma crontab et que mon script aille chercher ses arguments dans un fichier texte. : ((( est-ce possible ? et si oui comment ? ;))

du genre :
./script fic.txt

fic.txt
arg1 arg2
arg3 arg4
arg5 arg6
.....

merci d'avance à vous tous
Bonne journée
++
David

Configuration: Red Hat 5

Meilleures réponses pour « Passer argument a un script a partir d'un fic » dans :
Changer le mot de passe via un script VoirChanger le mot de passe via un script passwd Traditionnellement avec la commande "passwd" et son option "--stdin", au travers d'un "tube" (pipe en anglais), ce qui donne la syntaxe suivante :echo -e "new_password\nnew_password" | (passwd --stdin...
Bash - Les paramètres VoirIntroduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...
VBScript - Les fonctions et les procédures VoirLa notion de procédure On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction (ou procédure)...
Partager la connexion à Internet VoirIntérêt Si vous possédez un réseau local (deux ordinateurs ou plus reliés en réseau), dont un connecté à Internet (par l'intermédiaire d'un modem, par le câble, ...), il peut être intéressant de rendre la connexion accessible aux autres...
Perl - Les fonctions VoirLa notion de fonction et de procédure On appelle procédure un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la procédure dans le corps du programme principal. Les procédure permettent d'exécuter dans plusieurs...

1

jipicy, le 5 fév 2008 à 14:31:58

Salut,

J'avoue ne pas saisir la finalité de la chose ;-\

À moins que tes arguments ne changent souvent (d'où l'intérêt du fichier texte), ok pour appeler un fichier, mais dans le cas contraire, autant définir tes arguments au début de ton script, non ?

Ou alors j'ai rien pigé ? ;-((

;-)
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

2

david79, le 5 fév 2008 à 14:58:28

Salut jipicy

Pour t'expliquer un peu plus clairement...........j'avoue que même moi je comprends pas ce que j'ai écrit plus haut ;))))

le script est un script expect qui permet de recuperer la conf de tous les elements actifs du réseau (une centaine)

Non les argumenst en changent pas souvent ;))) mais je preferes tenir a jour un fichier avec

type_equipememnt @IP user password

le script vient chercher ses arguments dans son tableau et en fonction du type, execute la partie du script qui va bien !!!!

ext-ce que c'est plus clair ???

merci

;))

Répondre à david79

3

jipicy, le 5 fév 2008 à 15:11:59

Un peu plus clair dans la mesure ou il y a plus de détails ;-))

Pour "expect" et les arguments voir ce thread qui traite déjà du passage d'arguments sur la ligne de commande...

Maintenant reste à voir comment intégré ça dans ton script ;-))

Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

4

david79, le 5 fév 2008 à 16:24:12

Yes i jipicy, j'utilisais dejà ce passage d'arguments !!!

j'essaie en ce moment (sur le même système que j'ai décrit précédemment)

mon script expect

#!/usr/bin/expect -f

set name [lindex $argv 0]
set password [lindex $argv 1]

spawn telnet $name
expect "Enter Ctrl-Y to begin."
send "\031"
expect "Enter Password:"
send "$password\r"
expect "IP Configuration/Setup..."
send "C"
expect "#"
send "copy running-config tftp address 175.174.9.15 filename $name-config\r"
expect "#"
send "exit"

./expect @IP password => ca marche nicke

j'ai créé un fichier : list.txt avec dedans

@IP1 pass1
@ip2 pass2
@ip3 pass3
@ip4 pass4

et je fait un :

cat list.txt | while read line; do ./expect "${line}"; done

Il me prend bien en compte mes lignes de mon fichier list.txt....par contre petit souci.....

il me fait un telnet @IP1 pass1 !!!!!

il ne differencie pas argv1 et argv2 ???? chose que je fait mal ???

merci pour ton aide !!!

je sais, je suis tétu ;)))))

Répondre à david79

5

david79, le 5 fév 2008 à 16:25:25

J'espere avoir été assez clair ;)))))

merci beaucoup

Répondre à david79

6

jipicy, le 5 fév 2008 à 16:37:35

Enlèves les guillemets autour de la variable ${line}

cat list.txt | while read line; do ./expect ${line}; done 
;-))

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

7

david79, le 5 fév 2008 à 16:47:44

Merci !!!!

it's funny ;))))))))))

Répondre à david79

8

 jipicy, le 5 fév 2008 à 16:49:32

De rien ;-))

Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy