Enregistrer résultat de mon script en .TXT
Batou22
-
Danelectro Messages postés 1737 Date d'inscription Statut Membre Dernière intervention -
Danelectro Messages postés 1737 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Donc j'ai un probleme, je suis en stage et je dois faire un script qui me permet de savoir les log des switch via un telnet, j'ai donc fait le script et je ne sais pas quelle ligne y mettre pour enregistrer ma session en .txt
Script: host=xx.xx.xxx.xx
id="xxxxxxx"
pass=xxxxx
cmd1=show log
( echo open ${host}
sleep 1
echo $id
sleep 1
echo ${pass}
sleep 1
echo terminal length 0
sleep 1
echo show log
sleep 10
echo exit ) | telnet
J'ai fais pleins de recherches et test mais je n'y arrive pas... Si vous avez une solution/alternative
Cordialement
Donc j'ai un probleme, je suis en stage et je dois faire un script qui me permet de savoir les log des switch via un telnet, j'ai donc fait le script et je ne sais pas quelle ligne y mettre pour enregistrer ma session en .txt
Script: host=xx.xx.xxx.xx
id="xxxxxxx"
pass=xxxxx
cmd1=show log
( echo open ${host}
sleep 1
echo $id
sleep 1
echo ${pass}
sleep 1
echo terminal length 0
sleep 1
echo show log
sleep 10
echo exit ) | telnet
J'ai fais pleins de recherches et test mais je n'y arrive pas... Si vous avez une solution/alternative
Cordialement
A voir également:
- Script txt
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
- Txt to bat - Forum Windows
3 réponses
Tout simplement :
./script.sh > fichier.log
Ca a pour effet de rediriger la sortie standard du script vers fichier.log.
Si tu veux aussi la sortie d'erreurs :
./script.sh 2>&1 > fichier.log
Si tu veux logger ET afficher à l'écran :
./script.sh | tee fichier.log
Ou, si tu veux juste le log de Telnet :
(dans ton script) : ... | telnet > fichier.log
./script.sh > fichier.log
Ca a pour effet de rediriger la sortie standard du script vers fichier.log.
Si tu veux aussi la sortie d'erreurs :
./script.sh 2>&1 > fichier.log
Si tu veux logger ET afficher à l'écran :
./script.sh | tee fichier.log
Ou, si tu veux juste le log de Telnet :
(dans ton script) : ... | telnet > fichier.log
Qu'est ce qui ne "marche pas" ?
Bash n'a pas de mémorise pas l'output, tu ne peux pas dire à un moment du script "maintenant enregistre tout ce que tu m'as dit". Il faut le faire soit de manière externe (lors de l'appel du script), doit commande par commande, par exemple
#!/bin/bash
echo Debut du script > out.log
ping -c 1 localhost >> out.log
echo Fin du script >> out.log
Bash n'a pas de mémorise pas l'output, tu ne peux pas dire à un moment du script "maintenant enregistre tout ce que tu m'as dit". Il faut le faire soit de manière externe (lors de l'appel du script), doit commande par commande, par exemple
#!/bin/bash
echo Debut du script > out.log
ping -c 1 localhost >> out.log
echo Fin du script >> out.log
Salut,
Sinon, je viens de tester avec un telnet vers un pop.free.fr avec un script et le lancement avec la commande suivante :
Si tu veux aussi la sortie d'erreurs : ./script.sh 2>&1 > fichier.logEuh... non, la syntaxe serait plutôt
./script.sh > fichier.log 2>&1;-\
Sinon, je viens de tester avec un telnet vers un pop.free.fr avec un script et le lancement avec la commande suivante :
./foo.sh &> log.loget j'ai bien un fichier log.log de créer avec tout le contenu de la session ;-)
Merci bcp, cela fonctionne nickel, maintenat depuis quelques jours je tente de mettre une ligne dans mon script me permettant de mettre la date en nom de dossier et mettre mes logs dedans
Mon script est donc:
quand je le lance et compile cela ne fonctionne pas, c'est a dire que dans mon terminal le script ce met en route mais rien ne s'execute
host=xx.xx.xxx.xx
id="xxxxxxx"
pass=xxxxx
date_script=$(date +%d-%m-%Y
( mkdir $date_script
sleep 1
echo open ${host}
sleep 1
echo $id
sleep 1
echo ${pass}
sleep 1
echo terminal length 0
sleep 1
echo show log
sleep 10
echo exit ) | telnet > log_2.txt
quand je le lance et compile cela ne fonctionne pas, c'est a dire que dans mon terminal le script ce met en route mais rien ne s'execute
Script:
Premier telnet ( LOG 2 )
2 eme telnet ( LOG 3 )
3 eme telnet ( LOG 4 )
Donc, deja merci a vous mon programme fonctionne en partie :) ! Mais j'ai un petit probleme, en gros mon dossier ce créer bien niquel mais le LOG 3 et le LOG 4 vont bien dans le fichier mais mon premier telnet/log ne s'enregistre nul part... il me manque le log 2... pourtant le code est pareil
Premier telnet ( LOG 2 )
host=xx.xx.xxx.xx
id="xxxxxxx"
pass=xxxxx
date_script=$(date +%d -%m-%Y)
( echo open ${host}
sleep 1
echo $id
sleep 1
echo ${pass}
sleep 1
echo terminal length 0
sleep 1
echo show log
sleep 2
echo exit ) | mkdir ${date_script} | telnet > ${date_script}/log_2.txt
2 eme telnet ( LOG 3 )
host=xx.xx.xxx.xx
id="xxxxxxx"
pass=xxxxx
date_script=$(date +%d -%m-%Y)
( echo open ${host}
sleep 1
echo $id
sleep 1
echo ${pass}
sleep 1
echo terminal length 0
sleep 1
echo show log
sleep 2
echo exit ) | telnet > ${date_script}/log_3.txt
3 eme telnet ( LOG 4 )
host=xx.xx.xxx.xx
id="xxxxxxx"
pass=xxxxx
date_script=$(date +%d -%m-%Y)
( echo open ${host}
sleep 1
echo $id
sleep 1
echo ${pass}
sleep 1
echo terminal length 0
sleep 1
echo show log
sleep 2
echo exit ) | telnet > ${date_script}/log_4.txt
Donc, deja merci a vous mon programme fonctionne en partie :) ! Mais j'ai un petit probleme, en gros mon dossier ce créer bien niquel mais le LOG 3 et le LOG 4 vont bien dans le fichier mais mon premier telnet/log ne s'enregistre nul part... il me manque le log 2... pourtant le code est pareil
Le problème vient de là :
Tu ne peux pas utiliser de tube ( | ) entre le script telnet, le mkdir et la commande telnet. Place ton mkdir avant, c'est à dire après date_script=$(date +%d -%m-%Y).
Un peu de lecture : https://fr.wikibooks.org/wiki/Programmation_Bash/Flux_et_redirections
... echo exit ) | mkdir ${date_script} | telnet > ${date_script}/log_2.txt
Tu ne peux pas utiliser de tube ( | ) entre le script telnet, le mkdir et la commande telnet. Place ton mkdir avant, c'est à dire après date_script=$(date +%d -%m-%Y).
Un peu de lecture : https://fr.wikibooks.org/wiki/Programmation_Bash/Flux_et_redirections
cordialement