Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Tastatureingaben per Shell mit loggen?

258 views
Skip to first unread message

Stefan Bauer

unread,
Nov 10, 2009, 4:40:01 PM11/10/09
to
Thomas Ohms schrieb:
> Hallo zusammen,
>
> bevor mich hier jemand falsch versteht, möchte ich vorab erklären,
> weshalb ich die nachfolgende Funtktion benötige:
> Ich benötige eine Möglichkeit möglichst schnell und ohne viel Aufwand
> meine eigenen Arbeiten an Servern zu loggen. Damit möchte ich mir die
> Möglichkeit schaffen, auch nach Monaten noch nachschauen zu können, was
> ich auf dem entsprechenden Server getan habe.
>
> Meine Idee war nun ein Shell Skript zu schreiben, welches eine Art
> Keylogger aufruft, dann alle Eingaben mitloggt und nach einem erneuten
> Befehl die Aufnahme wieder stoppt (z.B. bei Passworteingaben).
> Kennt jemand von Euch eine Art Keylogger, der sich in ein Shell Skript
> integrieren lässt? Vielleicht kennt jemand auch ein Tool, dass genau
> das, was ich brauche, schon kann?!

Du kennst ~/.bash_history ? Passwörter landen dort eh nicht, ausser
du rufst weitere Programme mit Parametern auf z.B. ncftpput -u max
-p geheim usw.

Stefan

--
Stefan Bauer -----------------------------------------
PGP: E80A 50D5 2D46 341C A887 F05D 5C81 5858 DCEF 8C34
-------- plzk.de - Linux - because it works ----------


--
Haeufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an debian-user-g...@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listm...@lists.debian.org (engl)

Thomas Ohms

unread,
Nov 10, 2009, 4:40:02 PM11/10/09
to
Hallo zusammen,

bevor mich hier jemand falsch versteht, mï¿œchte ich vorab erklï¿œren,
weshalb ich die nachfolgende Funtktion benï¿œtige:
Ich benï¿œtige eine Mï¿œglichkeit mï¿œglichst schnell und ohne viel Aufwand
meine eigenen Arbeiten an Servern zu loggen. Damit mï¿œchte ich mir die
Mï¿œglichkeit schaffen, auch nach Monaten noch nachschauen zu kï¿œnnen, was


ich auf dem entsprechenden Server getan habe.

Meine Idee war nun ein Shell Skript zu schreiben, welches eine Art
Keylogger aufruft, dann alle Eingaben mitloggt und nach einem erneuten
Befehl die Aufnahme wieder stoppt (z.B. bei Passworteingaben).
Kennt jemand von Euch eine Art Keylogger, der sich in ein Shell Skript

integrieren lï¿œsst? Vielleicht kennt jemand auch ein Tool, dass genau


das, was ich brauche, schon kann?!

Danke fï¿œr Eure Tipps
Thomas

Christian Brabandt

unread,
Nov 10, 2009, 5:10:02 PM11/10/09
to
Hallo Stefan!

Stefan Bauer schrieb am Dienstag, den 10. November 2009:

> Du kennst ~/.bash_history ? Passwörter landen dort eh nicht, ausser
> du rufst weitere Programme mit Parametern auf z.B. ncftpput -u max
> -p geheim usw.

Das funktioniert aber nicht zuverlässig, wenn mehrere Sessions offen
sind. Besser ist sowas hier:

#v+
~$ grep -i hist .bashrc
HISTTIMEFORMAT='%F %T '
PROMPT_COMMAND='echo $USER `history 1` >> ~/.bash_log'
#v-

Damit erzeugt man eine Art ewiges Logfile.

Grüße
Christian
--
• It's what I call "mental masturbation", when you engage is some pointless
intellectual exercise that has no possible meaning.
Torvalds, Linus (2008-07-17).

rainer herrendörfer

unread,
Nov 10, 2009, 5:20:02 PM11/10/09
to
Tut vielleicht

man 1 script

was Du suchst?

--

kind regards

rainer herrendoerfer

Thomas Halinka

unread,
Nov 10, 2009, 5:50:01 PM11/10/09
to
Hallo Thomas,

Am Dienstag, den 10.11.2009, 22:35 +0100 schrieb Thomas Ohms:
> Hallo zusammen,
>

> bevor mich hier jemand falsch versteht, möchte ich vorab erklären,
> weshalb ich die nachfolgende Funtktion benötige:
> Ich benötige eine Möglichkeit möglichst schnell und ohne viel Aufwand
> meine eigenen Arbeiten an Servern zu loggen. Damit möchte ich mir die

> Möglichkeit schaffen, auch nach Monaten noch nachschauen zu können, was


> ich auf dem entsprechenden Server getan habe.
>
> Meine Idee war nun ein Shell Skript zu schreiben, welches eine Art
> Keylogger aufruft, dann alle Eingaben mitloggt und nach einem erneuten
> Befehl die Aufnahme wieder stoppt (z.B. bei Passworteingaben).

Das hatte ich einmal realisiert und gleich wieder verworfen, da es
einige unzulänglichkeiten hierbei gibt...

> Kennt jemand von Euch eine Art Keylogger, der sich in ein Shell Skript

> integrieren lässt? Vielleicht kennt jemand auch ein Tool, dass genau


> das, was ich brauche, schon kann?!

Ich nutze hierfür eine präparierte Bash, die nach /var/log/syslog loggt
und dessen ergebnis landet dank syslog-ng auf dem
remote-syslog-server...

Falls dich die $Bash interessiert, stelle ich sie gerne (auch als source
bzw patch) bereit...

Achtung, die $BASH-Variante greift _global_, was somit alle User des
Systems betrifft, solange sie keine andere Shell nutzen. Usernamen
tauchen somit auch im Log mit auf....

> Danke für Eure Tipps
> Thomas
>
>

Mit besten Grüßen,

thomas

Thomas Ohms

unread,
Nov 11, 2009, 12:00:02 AM11/11/09
to
Stefan Bauer schrieb:

> Du kennst ~/.bash_history ? Passwörter landen dort eh nicht, ausser
> du rufst weitere Programme mit Parametern auf z.B. ncftpput -u max
> -p geheim usw.
>
> Stefan
>
Hallo Stefan,

klar kenne ich die - habe ich aber überhaupt nicht dran gedacht. Danke
für den Hinweis!

Gruß
Thomas

Marc Schröder

unread,
Nov 11, 2009, 9:40:02 AM11/11/09
to

marc@sr-3:~$ apt-cache show snoopy
Package: snoopy
Priority: optional
Section: admin
Installed-Size: 92
Maintainer: Marc Haber <mh+debian...@zugschlus.de>
Architecture: i386
Version: 1.3-15
Depends: libc6 (>= 2.7-1), debconf (>= 0.5) | debconf-2.0, ld.so.preload-
manager (>= 0.1)
Filename: pool/main/s/snoopy/snoopy_1.3-15_i386.deb
Size: 12352
MD5sum: 6d426ad3b896272f12114bdd7888c2b2
SHA1: dcfa2c599bbdec8ba2c80e2f5d4c25411b4b1916
SHA256: 3c6ae3e99cfa59067e1b47d5e8d546ff6db6f82466a8231dee52f6bfa7e00ed0
Description-de: Umhüllungs- und Protokollierungsbibliothek für execve()
Snoopy ist lediglich eine Laufzeitbibliothek, die als Hülle für die von
libc bereitgestellte execve()-Funktion benutzt wird, um jeden Aufruf
mit Hilfe von syslog (authpriv) zu protokollieren. Systemadministratoren
könnten snoopy für
folgende Aufgaben nützlich finden: leichte/schwere Systembeobachtung,
Verfolgen der Aktivitäten anderer Administratoren oder um ein Gefühl
für das zu bekommen, was im System abläuft (z. B. Apache mit
CGI-Skripten).
.
Webseite: http://sourceforge.net/projects/snoopylogger/
Homepage: http://sourceforge.net/projects/snoopylogger/
Tag: admin::logging, interface::commandline, role::program, scope::utility,
works-with::logfile, works-with::software:running

Am Dienstag 10 November 2009 22:35:04 schrieb Thomas Ohms:
> Hallo zusammen,
>

> bevor mich hier jemand falsch versteht, möchte ich vorab erklären,
> weshalb ich die nachfolgende Funtktion benötige:
> Ich benötige eine Möglichkeit möglichst schnell und ohne viel Aufwand
> meine eigenen Arbeiten an Servern zu loggen. Damit möchte ich mir die

> Möglichkeit schaffen, auch nach Monaten noch nachschauen zu können, was


> ich auf dem entsprechenden Server getan habe.
>
> Meine Idee war nun ein Shell Skript zu schreiben, welches eine Art
> Keylogger aufruft, dann alle Eingaben mitloggt und nach einem erneuten
> Befehl die Aufnahme wieder stoppt (z.B. bei Passworteingaben).
> Kennt jemand von Euch eine Art Keylogger, der sich in ein Shell Skript

> integrieren lässt? Vielleicht kennt jemand auch ein Tool, dass genau


> das, was ich brauche, schon kann?!
>

> Danke für Eure Tipps

Michael Wagner

unread,
Nov 11, 2009, 10:10:02 AM11/11/09
to
* rainer herrendörfer <ghost...@web.de> 10.11.2009

> Tut vielleicht
>
> man 1 script
>
> was Du suchst?

Hallo Rainer,

ich finde ja 'ttyrec' für solche Aufgaben auch ganz nett.

Package: ttyrec
Architecture: i386
Version: 1.0.8-3
Depends: libc6 (>= 2.7-1)
Description: Terminal interaction recorder and player (for tty)
This package includes "ttyrec", a tty recorder which records terminal
interaction, and "ttyplay", the player to see that intereaction.
.
Ttyrec records your terminal input and output, like the "script"
command, but additionally records timing information to allow playback
at the original speed. It can record any console program, including
screen-oriented programs such as those using curses.


Tag: admin::logging, interface::commandline, role::program,

scope::utility, use::storing, works-with::software:running

Just my 2¢
Michael

--
Backup not found: (A)bort, (R)etry, (P)anic?

signature.asc

Tilo Schwarz

unread,
Nov 11, 2009, 4:40:01 PM11/11/09
to
On Tue, 10 Nov 2009 23:09:27 +0100, Christian Brabandt <d...@256bit.org>
wrote:

> Hallo Stefan!
>
> Stefan Bauer schrieb am Dienstag, den 10. November 2009:
>

>> Du kennst ~/.bash_history ? Passw�rter landen dort eh nicht, ausser


>> du rufst weitere Programme mit Parametern auf z.B. ncftpput -u max
>> -p geheim usw.
>

> Das funktioniert aber nicht zuverl�ssig, wenn mehrere Sessions offen


> sind. Besser ist sowas hier:
>
> #v+
> ~$ grep -i hist .bashrc
> HISTTIMEFORMAT='%F %T '
> PROMPT_COMMAND='echo $USER `history 1` >> ~/.bash_log'
> #v-
>
> Damit erzeugt man eine Art ewiges Logfile.

Interessant. Ich hab das so versucht:
# cat .bash_logout
history -n

Scheint auch bei mehreren Sessions richtig zu tun.


Viele Gr��e,

Tilo

Michael Strauß

unread,
Nov 11, 2009, 4:50:03 PM11/11/09
to
Am Tue, 10 Nov 2009 23:09:27 +0100
schrieb Christian Brabandt <d...@256bit.org>:

> > Du kennst ~/.bash_history ? Passwörter landen dort eh nicht, ausser
> > du rufst weitere Programme mit Parametern auf z.B. ncftpput -u max
> > -p geheim usw.
>
> Das funktioniert aber nicht zuverlässig, wenn mehrere Sessions offen
> sind. Besser ist sowas hier:

[...]
Die History kann man auf die selbe Art und Weise flicken:

# Specify this in .bashrc

* Make Bash append rather than overwrite the history on disk:

shopt -s histappend

* Whenever displaying the prompt, write the previous line to disk:

PROMPT_COMMAND='history -a'

# A new shell gets the history lines from all previous shells.


Grüße
Michael

--

Christian Brabandt

unread,
Nov 11, 2009, 4:50:03 PM11/11/09
to
Hallo Tilo!

Tilo Schwarz schrieb am Mittwoch, den 11. November 2009:

> Interessant. Ich hab das so versucht:
> # cat .bash_logout
> history -n
>
> Scheint auch bei mehreren Sessions richtig zu tun.

Kann sein, dass es mittlerweile funktioniert. Ich erinner mich, dass ich
fr�her damit mal Probleme hatte. Aber nach $HISTSIZE Eintr�gen werden
alte Eintr�ge �berschrieben. Das m�chte man vielleicht nicht.


Gr��e
Christian
--
Es gibt in Deutschland zwei Arten von Institutionen, die alle
nehmen m�ssen, die vor der T�r stehen: Das sind Gef�ngnisse
und Universit�ten.
-- Raimar L�st

Christian Brabandt

unread,
Nov 11, 2009, 5:00:03 PM11/11/09
to
Hallo Michael!

Michael Strau� schrieb am Mittwoch, den 11. November 2009:

> Am Tue, 10 Nov 2009 23:09:27 +0100
> schrieb Christian Brabandt <d...@256bit.org>:
>

> > > Du kennst ~/.bash_history ? Passw�rter landen dort eh nicht, ausser


> > > du rufst weitere Programme mit Parametern auf z.B. ncftpput -u max
> > > -p geheim usw.
> >

> > Das funktioniert aber nicht zuverl�ssig, wenn mehrere Sessions offen

> > sind. Besser ist sowas hier:
> [...]
> Die History kann man auf die selbe Art und Weise flicken:
>
> # Specify this in .bashrc
>
> * Make Bash append rather than overwrite the history on disk:
>
> shopt -s histappend
>
> * Whenever displaying the prompt, write the previous line to disk:
>
> PROMPT_COMMAND='history -a'
>
> # A new shell gets the history lines from all previous shells.


Ja, dass mu� sich wohl ge�ndert haben. histappend gab es in Version 2
noch nicht, oder? Ich erinner mich nicht mehr genau, wei� nur noch, dass
ich damit fr�her Probleme hatte.

Nicht vergessen HISTZIZE und HISTFILESIZE passend zu setzen.

Gr��e
Christian
--
Jeder Verstand ist f�r ein Gl�ck zu achten, der h�here Gewinne zuwehe
bringt.
-- Jacob Grimm

Message has been deleted

Sven Joachim

unread,
Nov 13, 2009, 3:00:04 PM11/13/09
to
Am 13.11.2009 um 18:51 schrieb Dirk Salva:

> Gibt es eigentlich eine M�glichkeit, aus parallel ge�ffneten Konsolen
> in die history zu loggen? Ich habe meist >3 "Tabs" in K-onsole von KDE
> ge�ffnet und das �rgernis, da� Befehle, die ich in Konsole 1 eingebe,
> in Konsole 3 erst in der History erscheinen, wenn ich alle Konsolen
> schlie�e und neu �ffne. Gibt es so eine Art "Multi-User-History f�r
> einen User"?!?

In der Bash nicht, soweit ich wei�. Falls du allerdings bereit bist,
stattdessen die Zsh zu verwenden, kann ich die Option share_history
anbieten, die genau das implementiert.

Sven

Christian Brabandt

unread,
Nov 14, 2009, 9:20:01 AM11/14/09
to
Hallo Dirk!

Dirk Salva schrieb am Freitag, den 13. November 2009:

> > * Whenever displaying the prompt, write the previous line to disk:
> > PROMPT_COMMAND='history -a'
> > # A new shell gets the history lines from all previous shells.
>

> Gibt es eigentlich eine Möglichkeit, aus parallel geöffneten Konsolen


> in die history zu loggen? Ich habe meist >3 "Tabs" in K-onsole von KDE

Du hast schon gelesen, was da steht?

Grüße
Christian
--
• Intelligence is the ability to avoid doing work, yet getting the work done.
Linus Torvalds

Message has been deleted

Michael Strauss

unread,
Nov 14, 2009, 1:10:01 PM11/14/09
to
Am Fri, 13 Nov 2009 18:51:15 +0100
schrieb Dirk Salva <dsa...@gmx.de>:

> > Die History kann man auf die selbe Art und Weise flicken:
> > # Specify this in .bashrc
> > * Make Bash append rather than overwrite the history on disk:
> > shopt -s histappend
> > * Whenever displaying the prompt, write the previous line to disk:
> > PROMPT_COMMAND='history -a'
> > # A new shell gets the history lines from all previous shells.
>

> Gibt es eigentlich eine Möglichkeit, aus parallel geöffneten Konsolen
> in die history zu loggen?

Siehe oben. Das loggt bei jedem Prompt den vorhergehenden Befehl in die
History-Datei.

> Ich habe meist >3 "Tabs" in K-onsole von KDE

> geöffnet und das Ärgernis, daß Befehle, die ich in Konsole 1 eingebe,


> in Konsole 3 erst in der History erscheinen, wenn ich alle Konsolen

> schließe und neu öffne. Gibt es so eine Art "Multi-User-History für
> einen User"?!?
Standardmäßig wird die History-Datei lediglich beim Start einer Bash
eingelesen um die History zu initialisieren. Das kannst du ebenfalls
bei jedem Prompt machen:

PROMPT_COMMAND='history -a;history -r'

Ist nicht genau das, was du willst, da ein Befehl erst in der
History-Datei erscheint, wenn er abgearbeitet wurde und in einer
anderen Bash-Shell erst mit dem nächsten Prompt eingelesen wird.

Christian Brabandt

unread,
Nov 15, 2009, 1:00:02 PM11/15/09
to
Hallo Dirk!

Dirk Salva schrieb am Samstag, den 14. November 2009:

> Hallo Christian!


>
> On Sat, Nov 14, 2009 at 03:12:59PM +0100, Christian Brabandt wrote:
> > Dirk Salva schrieb am Freitag, den 13. November 2009:
> > > > * Whenever displaying the prompt, write the previous line to disk:
> > > > PROMPT_COMMAND='history -a'
> > > > # A new shell gets the history lines from all previous shells.
> > > Gibt es eigentlich eine Möglichkeit, aus parallel geöffneten Konsolen
> > > in die history zu loggen? Ich habe meist >3 "Tabs" in K-onsole von KDE
> > Du hast schon gelesen, was da steht?
>

> Du hast schon verstanden, was ich will?
> Ich habe nix davon, wenn zwar von allen Konsolen in die history
> geschrieben wird, der zuletzt eingegeben Befehl von beispielsweise
> Konsole 3 aber nur dann in einer anderen Konsole als 3 erscheint, wenn
> ich mich in der "anderen" _danach_ anmelde.

PROMPT_COMMAND ist aber der richtige Hinweis. Hänge halt noch ein
history -r dran. Lies halt mal help history in der Bash.
(und man bash *duck*)

Oder wolltest Du das unabhängig von der Shell? Dann mußt Du vermutlich
für alle verwendeten Shells nachlesen, wie man das einstellt.

> wieder angemeldet habe. Da gab's hier schon den Vorschlag mit der zsh
> als Alternative. Der hat aber für mich den Nachteil, daß die eben
> längst nicht auf allen Systemen vorhanden ist und ich mich somit an ein
> "Inselverhalten" gewöhne, was ich dann woanders schmerzlich vermissen
> werde. Davon ab habe ich von Konsolen bzw. dem Konzept (noch) keine
> Ahnung und weiss z.B. nicht, wie sich Scripte verhalten, die meist
> ursprünglich für bash geschrieben sind. Eine Fehlersuche (z.B. hier in

In Deinen Scripten verwendest Du doch bestimmt eine Shebang Zeile? Bei
korrekter Zeile, solltest Du da keine Probleme bekommen.

> der ML), bei der ich als "Exot" als einziger eine zsh nutze, wäre
> ungleich schwieriger...

Ich bin mir ziemlich sicher, dass die zsh von ziemlich vielen
Shell-Experten und Debian Profis aus dieser Liste verwendet wird.

Grüße,
Christian
--
• I don't doubt at all that virtualization is useful in some areas. What I
doubt rather strongly is that it will ever have the kind of impact that the
people involved in virtualization want it to have.

Message has been deleted

Christian Brabandt

unread,
Nov 16, 2009, 3:50:01 AM11/16/09
to
Hallo Dirk!

Dirk Salva schrieb am Sonntag, den 15. November 2009:

> On Sun, Nov 15, 2009 at 06:56:26PM +0100, Christian Brabandt wrote:
> > > On Sat, Nov 14, 2009 at 03:12:59PM +0100, Christian Brabandt wrote:
> > > > Dirk Salva schrieb am Freitag, den 13. November 2009:
> > > > > > * Whenever displaying the prompt, write the previous line to disk:
> > > > > > PROMPT_COMMAND='history -a'
> > > > > > # A new shell gets the history lines from all previous shells.
> > > > > Gibt es eigentlich eine Möglichkeit, aus parallel geöffneten Konsolen
> > > > > in die history zu loggen? Ich habe meist >3 "Tabs" in K-onsole von KDE

> > PROMPT_COMMAND ist aber der richtige Hinweis. Hänge halt noch ein
> > history -r dran. Lies halt mal help history in der Bash.
> > (und man bash *duck*)
>

> Hmm. Wo genau muss denn dieser Befehl hin? Muss ich den in die
> bash.bashrc anhängen? Oder in jeder Shell eingeben, wenn ich eine
> aktualisierte history benutzen will?

Schreib in deine ~/.bashrc oder für alle Nutzer in /etc/bash.bashrc
sowas hier:

if `echo "$PROMPT_COMMAND" | grep -vq history` ; then
export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; } history -a ; history -n " ;
fi


Grüße
Christian
--
• If you have ever done any security work; and it did not involve the concept
of 'network of trust'; it wasn't security work, it was masturbation.
Linus at Google talking about GIT

Message has been deleted

Christian Brabandt

unread,
Nov 16, 2009, 4:00:02 PM11/16/09
to
Hallo Dirk!

Dirk Salva schrieb am Montag, den 16. November 2009:

> On Mon, Nov 16, 2009 at 09:48:18AM +0100, Christian Brabandt wrote:
> > if `echo "$PROMPT_COMMAND" | grep -vq history` ; then

Wenn $PROMPT_COMMAND history nicht enthält, dann

> > export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; } history -a ; history -n " ;

setze PROMPT_COMMAND auf PROMPT_COMMAND und hänge die Zeichenfolge
history -a ; history -n an

#v+
help history
[…]
append the contents to the history list instead. `-a' means
to append history lines from this session to the history file.
Argument `-n' means to read all history lines not already read
from the history file and append them to the history list.
[…]
#v-


> Kannst Du mir bitte auch mal erklären, was die einzelnen Elemente
> machen?

[X] done

Grüße
Christian
--
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

Michael Strauss

unread,
Nov 16, 2009, 4:20:02 PM11/16/09
to
Am Mon, 16 Nov 2009 09:48:18 +0100
schrieb Christian Brabandt <d...@256bit.org>:

> Schreib in deine ~/.bashrc oder für alle Nutzer in /etc/bash.bashrc

> sowas hier:
>
> if `echo "$PROMPT_COMMAND" | grep -vq history` ; then
> export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; } history -a ; history -n " ;
> fi

history -a ; history -n

"histroy -n" tut hier unter Lenny nicht so richtig, da stets alle Zeilen seit dem Bash-Start
der History hinzugefügt werden.

$ PROMPT_COMMAND='history -a;history -n'
$ echo 1
1
$ echo 2
2
$ echo 3
3
$ fc -l
[...]
1505 PROMPT_COMMAND='history -a;history -n'
1506 echo 1
1505 PROMPT_COMMAND='history -a;history -n'
1506 echo 1
1507 echo 2
1508 PROMPT_COMMAND='history -a;history -n'
1509 echo 1
1510 echo 2
1511 echo 3

Grüße
Michael

--

Message has been deleted
0 new messages