Rechercher : dans
Par :

Succesion de variable dans un script

Dernière réponse le 21 nov 2006 à 14:21:01 nabil1706, le 21 nov 2006 à 10:29:20 
 Signaler ce message aux modérateurs

Bonjour,
J'essaie d'optimisier un script en evitant d'ecrire dans des fichiers successifs. Pour cela je voudrais uniquement utiliser des variables, mais je n'y arrive pas.
Voila une partie du script :
/usr/local/rep1/telnet_lns.sh $1 $2 $3 > /home/monrep/$1_01.txt ;
echo $2 > titi
A=`cat titi | cut -c 5-8`
grep $A /home/monrep/$1_01.txt | tr -s "[:blank:]" "*" | cut -f 6 -d "*" >/home/monrep/fic_tot; awk '
{ s += $1 } END { print s }' /home/monrep/fic_tot

en gros je recupere des données sur une machine et le recupere les nombre que je veux en faisant des grep successifs avec les bons parametres pour en faire le total

Merci pour vos reponses

Meilleures réponses pour « Succesion de variable dans un script » dans :
VBScript - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Il s'agit en fait d'une zone de la mémoire réservée pour le stockage d'une valeur. Les...
Comment récupérer le résultat d'une commande dans une variable Voir Comment récupérer le résultat d'une commande dans une variable Préambule Syntaxe Exemples Préambule Il est bien souvent nécessaire de récupérer le résultat d'une commande (ou de son code retour) dans une variable afin de pouvoir...
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha-Bang Premièrement,...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Le remplacement de variables en shell Bash VoirLe remplacement de variables Introduction Il peut s'avérer utile de s'assurer qu'une variable est bien définie avant de procéder à son remplacement, ou tout simplement de s'assurer que celle-ci n'est pas vide, et dans ce cas de l'initialiser avec...
PHP - Les variables d'environnement VoirNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script...
Les variables d'environnement avec les servlets VoirNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas d'une...
Variables d'environnement VoirVariables d'environnement Une variable d'environnement est une valeur dynamique, chargée en mémoire, pouvant être utilisée par plusieurs processus fonctionnant simultanément. Sur la plupart des systèmes d'exploitation, les emplacement de...

1

jipicy, le 21 nov 2006 à 10:46:30

Salut,

Peut être qu'avec un aperçu du script "telnet_lns.sh", des valeurs des paramètres "$1 $2 $3" on pourrait davantage te préter main forte, non ?

Enfin si tu veux bien...

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

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

Répondre à jipicy

2

nabil1706, le 21 nov 2006 à 10:54:28

Bonjour,
Le voila....le script permet de se connecter à uen machine distante pour recuperer des infos pour faire des stats

#!/usr/bin/expect
set timeout 120
set lns [lindex $argv 0]
set ctx1 [lindex $argv 1]
set ctx2 [lindex $argv 2]
set ctx3 [lindex $argv 3]
set ctx4 [lindex $argv 4]
set ctx5 [lindex $argv 5]
set ctx6 [lindex $argv 6]

spawn telnet $lns
expect "login: "
send "monlogin\r"
expect "Password:"
send "monpassword\r"
expect "#"
send "terminal length 0\r"
expect "#"
send "context $ctx1\r"
expect "#"
send "show l2tp info\r"
expect "#"

Répondre à nabil1706

3

jipicy, le 21 nov 2006 à 11:03:40

Ok merci.

Par contre il nous faudrait aussi les paramètres et un aperçu de ton fichier "$1_01.txt" pour essayer de t'aider à optimiser le tout.
Z'@+...che.

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

Répondre à jipicy

4

nabil1706, le 21 nov 2006 à 11:13:35

Re bonjour
voila un apperçu
spawn telnet cbv-lns-1
Trying XXX.XXX.XXX.XXX...
Connected to cbv-lns-1 (XXX.XXX.XXX.XXX).
Escape character is '^]'.

CBV-LNS-1

This router is the property of XXXXX.
All actions are monitored.
Unauthorized access is prohibited.
Violators will be prosecuted.


For operational problems contact:

XXX Network Operations Centre
e-mail: XXX@XXX.XXX
phone : XX.XX.XX.XX

login: monlogin
Password:
Signon successful.
[local]CBV-LNS-1#terminal length 0
[local]CBV-LNS-1#context lns-LD1
[lns-LD1]CBV-LNS-1#show l2tp info
Conf. Tun Ses
Peer Name Local Name Role Source Count Count
-------------------- -------------------- ---- ------ ----- -----
L2TP_PW/XX.XX.XX.XX CBV-LNS-1-LD1 LNS Local 1 3 Unnamed
L2TP_PW/XX.XX.XX.XX1 CBV-LNS-1-LD1 LNS Local 1 2 Unnamed
L2TP_PW/XX.XX.XX.XX2 CBV-LNS-1-LD1 LNS Local 1 1 Unnamed
L2TP_PW/XX.XX.XX.XX3 CBV-LNS-1-LD1 LNS Local 1 1 Unnamed
L2TP_PW/XX.XX.XX.XX4 CBV-LNS-1-LD1 LNS Local 1 4 Unnamed
L2TP_PW/XX.XX.XX.XX5 CBV-LNS-1-LD1 LNS Local 1 5 Unnamed
L2TP_PW/XX.XX.XX.XX6 CBV-LNS-1-LD1 LNS Local 1 2 Unnamed
L2TP_PW/XX.XX.XX.XX7 CBV-LNS-1-LD2 LNS Local 1 1 Unnamed


je recupere le chiffre juste avant Unnamed et j'en fais la somme, ici pour LD1, ensuite pour LD2....
Pour info,Il y a des decalages de temps en temps sur les colonnes

Répondre à nabil1706

5

jipicy, le 21 nov 2006 à 11:32:26

Encore un petit truc... à quoi correspond "$2" (je suppose que ça a un rapport avec "LD1") ?
Z'@+...che.

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

Répondre à jipicy

6

nabil1706, le 21 nov 2006 à 11:38:26

Oui exactement...
Je telnet une machine avec des variables $2 (qui est "xxx-LD1"), $3 qui est xxx-LD2).
donc dans mon script, il faut que je recupere LD1 (donc sans xxx-)pour que mon grep puisse recupere les bonnes lignes
C'est pour ça que que je recupere $2 dans un fichier pour le cutter afin de n'avoir que les 3 dernier caracteres..ici LD1

merci

Répondre à nabil1706

7

jipicy, le 21 nov 2006 à 11:57:11

Voilà ce que ça pourrait donner :

# Là on change rien
/usr/local/rep1/telnet_lns.sh $1 $2 $3 > /home/monrep/$1_01.txt
# Plutôt que de passer par un fichier, autant passer par une variable
# Changer "$2" par "$3" si nécessaire
A=$(expr "$2" : ".*\(...\)")
# Puis on enchaîne
grep -E "($A |unnamed$)" /home/monrep/$1_01.txt | awk '{ s += $6 } END { print s }'
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

8

nabil1706, le 21 nov 2006 à 13:01:35

Merci, je teste et je te tiens au courant

@+

Répondre à nabil1706

9

nabil1706, le 21 nov 2006 à 14:11:39

Hello
Je te remercie pour ton aide
ça marche tres bien

@+

Répondre à nabil1706

10

 jipicy, le 21 nov 2006 à 14:21:01

De rien ;-))

Tu peux simplifier tout compte fait la dernière ligne comme suit :

grep "$A " /home/monrep/$1_01.txt | awk '{ s += $6 } END { print s }'
Qui devrait faire l'affaire aussi ;-)
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy