Enregistrer résultat de mon script en .TXT

Batou22 -  
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
A voir également:

3 réponses

Maxence76 Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   12
 
Bonjour,

Utilise ceci :
echo "THIS IS STUFF FOR THE FILE" > monfichier.txt
1
Batou22
 
Je comprend pace qu'il faut rempacer par this i stuff for the file

cordialement
0
Maxence76 Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   12
 
Bah ce que tu veux écrire dans ton fichier :)
0
Batou22
 
Cela na fonctionne pas...
0
Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention   371
 
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
1
Batou22
 
J'aimerais une fonction qui m'enreigistre ma session directement a mette dans le script, ce que tu m'as donné ne marche pas...
0
Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention   371
 
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
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,
Si tu veux aussi la sortie d'erreurs : ./script.sh 2>&1 > fichier.log
Euh... 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.log
et j'ai bien un fichier log.log de créer avec tout le contenu de la session ;-)
0
Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention   371
 
"Euh... non, la syntaxe serait plutôt
./script.sh > fichier.log 2>&1"
Exact, je viens de tester, au temps pour moi !
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431 > Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention  
 
Avec les shells actuels (bash du moins), la syntaxe
cmd &> log
ou
cmd >& log
pour une redirection de la sortie standard et de la sortie d'erreur sont plus simples ;-)
0
Batou22
 
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
0
Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention   371
 
Pour récupérer la date tu peux procéder comme ceci :
date_script=$(date +%d-%m-%Y)

Et ensuite :
mkdir $date_script

Ce qui donne des dossiers sous la forme : 01-01-2015
0
Batou22 > Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention  
 
Mon script est donc:
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
0
CpasMoi > Batou22
 
Salut,
date_script=$(date +%d-%m-%Y
Il manque la parenthèse fermante à la fin ;-(

De plus, puisque tu as créé un répertoire autant y envoyé le log dedans non ?
...| telnet > ${date_script}/log_2.txt
0
Batou22 > CpasMoi
 
Script:

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
0
Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention   371
 
Le problème vient de là :
... 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
0