Portál AbcLinuxu, 12. května 2025 09:11

Dotaz: Bash history - přidání textu do historie

22.2.2010 13:25 Rover | skóre: 10
Bash history - přidání textu do historie
Přečteno: 380×
Odpovědět | Admin
Ahoj,

mám linkovanou historii více uživatelů do jednoho souboru a chci, aby v každém řádku historie bylo napsáno, který uživatel příkaz zadal ... např.:
672 kuba 2010-02-20_14:44:16; dpkg -l
673 pepa 2010-02-22_10:02:20; pstree
674 pepa 2010-02-22_10:06:34; ls
675 kuba 2010-02-22_10:06:54; mc
676 kuba 2010-02-22_10:06:57; cat /etc/group
677 pepa 2010-02-22_10:07:01; ls -la
678 pepa 2010-02-22_10:07:07; pstree
Nevíte jak na to?

Možná by to šlo pomocí history extensions...
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.2.2010 14:00 Ondřej Kopka | skóre: 20 | blog: ondrejk
Rozbalit Rozbalit vše Re: Bash history - přidání textu do historie
Odpovědět | | Sbalit | Link | Blokovat | Admin
Obavam se, ze tohle bude problem. Muzu vedet co te vedlo k linkovani historii vice uzivatelu do jednoho souboru?
22.2.2010 14:13 Ondřej Kopka | skóre: 20 | blog: ondrejk
Rozbalit Rozbalit vše Re: Bash history - přidání textu do historie
imho toto neni dobry pristup, kdyz uz, stejnou funkcionalitu poskytne jednoduchy skriptik typu: for usr (kuba pepa); do perl -ne '/^(\d+) (\w+) ([0-9_:;\-]+) (.+)/; print "$3 $2 $1 $4\n"' /home/$usr/.bash_history; done
22.2.2010 14:50 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash history - přidání textu do historie
Akekolvek dodatocne spracovanie user history filov nemoze zachytit cas spustenia. Asi sa bude musiet pohrat s PROMPT_COMMAND.
If you hold a Unix shell up to your ear, you can you hear the C.
22.2.2010 15:00 Ondřej Kopka | skóre: 20 | blog: ondrejk
Rozbalit Rozbalit vše Re: Bash history - přidání textu do historie
muze: export HISTTIMEFORMAT="%h/%d - %H:%M:%S "

pak to projede skriptikem viz vyse a sort podle casu
22.2.2010 15:24 Rover | skóre: 10
Rozbalit Rozbalit vše Re: Bash history - přidání textu do historie
Společná historie je dobrá, pokud na server přistupuje více uživatelů a dělají totéž ... pak si kdokoliv může vylistovat history a vidí, kdo tam co před ním dělal.

Nejde mi o to, aby to bylo neprůstřelné, ale jen o přiřazení příkazu k username.

Co jde, je do .bash_logout dát "history -w" a pak něco jako "echo pepa_logout >> ~/.bash_history". Pak všechny příkazy do logoutu jsou jeho...

Ale ideální by bylo, kdyby se dal vsunout username přímo do bufferu history než se zapíše na disk při ukončení bashe...
22.2.2010 16:02 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash history - přidání textu do historie
Timestamp si spravis cez HISTTIMEFORMAT a usera cez
sed "s/^/$USER /" ~/.bash_history >> /tmp/global_history
a dat to do ~/.bash_logout za history -w.
If you hold a Unix shell up to your ear, you can you hear the C.
22.2.2010 16:28 Ondřej Kopka | skóre: 20 | blog: ondrejk
Rozbalit Rozbalit vše Re: Bash history - přidání textu do historie
to si myslim ze asi nepujde, jako jedine reseni me napada skript, ktery projde historii vsech uzivatelu, spoji ji, a spolu s uzivatelskym jmenem vypise...
22.2.2010 15:15 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash history - přidání textu do historie
Odpovědět | | Sbalit | Link | Blokovat | Admin
V kazdom pripade je akekolvek riesenie zalozene na shell history cisto dobrovolnym riesenim. Ak user nebude chciet, tak si nastavi, ze sa ziadna history nikam vkladat nebude. User vlastni shell proces, tak si s nim moze spravit co chce a nemusi respektovat, aby shell niekam nieco zapisoval.

Nepriestrelne riesenie by asi bolo v jadre monitorovat syscall fork a jeho odnoze a zapisovat si ich niekam. Mozno novinky ako u-probes, tracepointy a ine sposoby trasovania jadra by na to sli pouzit aj bez toho, aby si si musel pisat vlastny kod do jadra.
If you hold a Unix shell up to your ear, you can you hear the C.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.