Succesion de variable dans un script

Résolu/Fermé
nabil1706
Messages postés
17
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
22 décembre 2006
- 21 nov. 2006 à 10:29
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
- 21 nov. 2006 à 14:21
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

5 réponses

jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
21 nov. 2006 à 10:46
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...

;-)
0
nabil1706
Messages postés
17
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
22 décembre 2006
2
21 nov. 2006 à 10:54
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 "#"
0
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
21 nov. 2006 à 11:03
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.
0
nabil1706
Messages postés
17
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
22 décembre 2006
2
21 nov. 2006 à 11:13
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
0
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
21 nov. 2006 à 11:32
Encore un petit truc... à quoi correspond "$2" (je suppose que ça a un rapport avec "LD1") ?
0
nabil1706
Messages postés
17
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
22 décembre 2006
2
21 nov. 2006 à 11:38
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
0
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
21 nov. 2006 à 11:57
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 }'
;-))
0
nabil1706
Messages postés
17
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
22 décembre 2006
2
21 nov. 2006 à 13:01
Merci, je teste et je te tiens au courant

@+
0
nabil1706
Messages postés
17
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
22 décembre 2006
2
21 nov. 2006 à 14:11
Hello
Je te remercie pour ton aide
ça marche tres bien

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
21 nov. 2006 à 14:21
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 ;-)
0