[#] "Screencast w terminalu" - Nagrywamy konsolę tworząc maszynopis sesji

( Ostatnio zmieniony pon., 09/06/2008 - 13:53 )
 

Od autora artykułu: Polecam przetestować jak to działa. Bardzo ciekawe narzędzie konsolowe.

Składnia polecenia:

script [-a] [-f] [-q] [-t] [plik]

Script tworzy maszynopis wszystkiego, co zostało wydrukowane na Twoim terminalu. Jest to przydatne dla studentów, którzy potrzebują wydruk zapisu interakcyjnej sesji jako dowód na wykonanie wyznaczonego zadania, maszynopis ten może być później wydrukowany.

Jeżeli argument plik jest podany, script zapisuje cały dialog w pliku. Jeżeli nie zostanie podana nazwa pliku, wówczas maszynopis jest zapisany w pliku typescript.

Opcje:

-a – Dołącza wyjście do pliku albo typescript, zachowując uprzednią zawartość.
-f – Opróżnia wyjście po każdym zapisie. Jest to użyteczne w przypadku współpracy kilku osób: pierwsza wykonuje „mkfifo foo; script -f foo“, a druga w czasie rzeczywistym nadzoruje jej poczynania, używając „cat foo“.
-q – Tryb cichy.
-t – Wypisuje na stderr informacje o czasie. Dane te składają się z dwóch pól rozdzielonych spacją. Pierwsze pole zawiera informację, jak dużo czasu upłynęło od poprzedniego wyjścia. Drugie pole określa, ile znaków zostało wypisanych tym razem. Informacja ta może zostać użyta do powtórzenia zapisanego skryptu, tak jak rzeczywiście był wprowadzany.

Skrypt kończy się kiedy wychodzisz z powłoki (control-D, aby wyjść z powłoki Bourne (sh(1)), i exit, logout albo control-d (jeżeli ignoreeof nie jest ustawiona) dla powłoki C, csh(1)).

Pewne interakcyjne komendy, takie jak vi(1), tworzą śmieci w pliku maszynopisu Script działa najlepiej z komendami, które nie manipulują obrazem, rezultaty są słabsze od naśladowanego wydruku terminala.

Jeżeli zmienna środowiskowa SHELL istnieje, powłoka rozwidlona przez script będzie tą powłoką. Jeżeli SHELL nie jest ustawiona, wówczas przybierana jest powłoka Bourne. (Większość powłok ustawia tę zmienną automatycznie).

Nagrywanie

script -t 2> timestamp

lub do inego pliku niż domyślny:

script naszplik_sesji -t 2> timestamp

Odtwarzanie

scriptreplay timestamp

lub z innego pliku maszynopisu sesji:

scriptreplay timestamp naszplik_sesji

Przydatny może okazać się skrypt do tworzenia pliku sesji wraz z czasami jako jeden plik.

script.sh

#//script.sh, uses script and scriptreplay to record and playback virtual terminal.
#//Copyright (C) 2007  Hean Kuan Ong ( mysurface[at]gmail.com )
#//
#//This program is free software; you can redistribute it and/or
#//modify it under the terms of the GNU General Public License
#//as published by the Free Software Foundation; either version 2
#//of the License, or (at your option) any later version.
#//
#//This program is distributed in the hope that it will be useful,
#//but WITHOUT ANY WARRANTY; without even the implied warranty of
#//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#//GNU General Public License for more details.
#//
#//You should have received a copy of the GNU General Public License
#//along with this program; if not, write to the Free Software
#//Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
#!/bin/bash

SCRIPT=`which script`
SCRIPTREPLAY=`which scriptreplay`

if [ ! -n $SCRIPT ]
then
    echo "script nie jest zainstalowany, zainstaluj go.";
    exit
fi

if [ ! -n $SCRIPTREPLAY ]
then
    echo "scriptreplay nie jest zainstalowany, zainstaluj go.";
    exit
fi

if [ "$1" == "-r" ]
then
    if [ ! -n $2 ]
    then
        read -p "Jaka jest nazwa towjego pliku z sesją? " NAME
    else
        NAME=$2
    fi
    echo "Nagrywanie sesji zacznie się za chwilę, aby zakończyć wpisz exit."
    script -t 2>$NAME.timing -a $NAME.session;
    tar czf $NAME $NAME.timing $NAME.session
    rm $NAME.timing $NAME.session
    echo "Uruchom $0 -p i podaj nazwę pliku sesji $NAME do odtworzenia"
elif [ "$1" == "-p" ]
then
    if [ ! -n "$2" ]
    then
        read -p "Jaki plik sesji chcesz odtworzyć? " NAME
    else
        NAME=$2
    fi
    if [ -e $NAME ]
    then

        tar -zxf $NAME
        scriptreplay $NAME.timing $NAME.session
        rm $NAME.timing $NAME.session
        echo "To jest koniec odtwarzania pliku sesji."
    else
        echo "Plik $NAME nie istnieje."
    fi
else
    echo `basename $0` " nagrywa i odtwarza sesję terminala."
    echo "Użyj: "
    echo `basename $0` " -r aby nagrać"
    echo `basename $0` " -p aby odtworzyć"
fi

Przydatne linki:

http://pl.wikipedia.org/wiki/Screencast

recordmydesktop­.sf.net

Twoja ocena: Brak Średnio: 5 (1 vote)

Dodaj nową odpowiedź

Informacja:

Osoby zamieszczające wypowiedzi naruszające prawo lub prawem chronione dobra osób trzecich, mogą ponieść z tego tytułu odpowiedzialność karną lub cywilną. Upewnij się, że twoja wypowiedź nie godzi w niczyje mienie.

  • Internal paths in single or double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or path. Paths to files in single or double quotes, written as "files:somefile.ext", for example, are replaced with the appropriate URL that can be used to download the file.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <strong> <blockquote> <code>
  • Znaki końca linii i akapitu dodawane są automatycznie.

Więcej informacji na temat formatowania

Łapirobot
Proszę odpowiedzieć
s
s
K
9
S
1
1
L
8
2
Enter the code without spaces and pay attention to upper/lower case.