Log je shell-sessies met script

gereedschapskist

Artikelgereedschap

  • Tip ons
  • Printen
  • Reacties (0)
Aanbevelen

Gepubliceerd: Dinsdag 24 augustus 2010
Auteur: Koen Vervloesem

Als je wilt documenteren welke opdrachten je in een shell-sessie hebt uitgevoerd en wat de resultaten waren, komt het programma script goed van pas. Dit kopieert alle in- en uitvoer van je shell naar een bestand.

Als je een aantal opdrachten in een shell intypt en de uitvoer daarvan wilt bijhouden voor latere analyse, dan kun je natuurlijk shell redirection gebruiken om de uitvoer naar een bestand te schrijven. Gebruik je tee, dan blijf je tegelijk ook de uitvoer in je shell zien. Er is echter een eenvoudiger manier om de hele invoer, uitvoer en foutenuitvoer van een shell-sessie naar een bestand te schrijven:


script sessie.log

Dit voert een subshell uit (degene die in de omgevingsvariabele $SHELL gedefinieerd is), en wanneer je de shell verlaat met exit of CTRL+D, vind je een kopie van je volledige interactie met de shell in het bestand sessie.log.

Wanneer je het uitvoerbestand met cat bekijkt, zul je daar niet veel bijzonders aan zien, behalve dat ook je opdrachtprompt in de uitvoer wordt getoond. Maar als je het opent in een editor, merk je dat er heel wat 'control characters' in de uitvoer staan, waaronder ook backspace en enter. Het programma script neemt immers elk teken dat je intypt real-time op. Wil je deze control characters uit het bestand halen, dan kun je het volgende Perl-script gebruiken:


cat sessie.log | \

perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' |\

col -b > sessie_opgekuist.log

Deel je sessie

De Linux-versie van script heeft nog een handige extra functie: met de optie -f wordt de uitvoer geflusht na elke lees- of schrijfopdracht. Hierdoor kun je ervoor zorgen dat iemand anders real-time met je mee kan kijken terwijl je opdrachten in je shell intypt. Voer het volgende uit:


mkfifo sessie; script -f sessie

En laat terwijl je opdrachten in je shell-sessie uitvoert nu de andere persoon op dezelfde computer (bijvoorbeeld ingelogd via ssh) meekijken met:


cat sessie

Replays

Een andere handige functie van de Linux-versie van script is de replay. Save daarvoor de timing-informatie van je sessie met de optie -t in een afzonderlijk bestand:


script -t 2>sessie.timing sessie.log

En dan kun je later met het programma scriptreplay een replay van de sessie bekijken die even veel tijd in beslag neemt als de originele sessie:


scriptreplay sessie.timing sessie.log

Een script replay is hierdoor ideaal om tijdens een presentatie te illustreren hoe je een bepaalde taak uitvoert: neem de sessie van tevoren op en speel ze tijdens je presentatie af, waardoor je je kunt focussen op je uitleg.

Bron: Techworld

De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.

Totaal 0 reactiesLaatste reacties


Nieuwsbrief

Ontvang dagelijks een overzicht van het laatste ICT-Nieuws in uw mailbox

Whitepapers

  • Houdt grip op UC-uitdagingen

    Unified communications biedt vele voordelen, maar heeft ook specifieke uitdagingen en niet ieder project levert het verwachte ROI op.

    Downloaden
  • Flexibele IT noodzaak voor bankenOnderzoeksrapport over de beperkte flexibiliteit van veel IT-systemen in de bancaire wereld. Lees meer!
  • Overheid bespaart met cloud computingDiscussie over cloud-beleid overheid. Whitepaper over kosten, veiligheid en beschikbaarheid.
» Meer whitepapers

Peiling

Loading Poll

Video: Review: HTC One X-smartphone met vijf...

Review: HTC One X-smartphone met vijf cores (video)