Enregistrer résultat de mon script en .TXT

Batou22 -  
Danelectro Messages postés 1844 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

3 réponses

  1. Maxence76 Messages postés 195 Statut Membre 12
     
    Bonjour,

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

      cordialement
      0
    2. Maxence76 Messages postés 195 Statut Membre 12
       
      Bah ce que tu veux écrire dans ton fichier :)
      0
    3. Batou22
       
      Cela na fonctionne pas...
      0
  2. Danelectro Messages postés 1844 Date d'inscription   Statut Membre Dernière intervention   375
     
    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
    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
    2. Danelectro Messages postés 1844 Date d'inscription   Statut Membre Dernière intervention   375
       
      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
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
    4. Danelectro Messages postés 1844 Date d'inscription   Statut Membre Dernière intervention   375
       
      "Euh... non, la syntaxe serait plutôt
      ./script.sh > fichier.log 2>&1"
      Exact, je viens de tester, au temps pour moi !
      0
    5. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > Danelectro Messages postés 1844 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
  3. 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
    1. Danelectro Messages postés 1844 Date d'inscription   Statut Membre Dernière intervention   375
       
      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
    2. Batou22 > Danelectro Messages postés 1844 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
    3. 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
    4. 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
    5. Danelectro Messages postés 1844 Date d'inscription   Statut Membre Dernière intervention   375
       
      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