GNU/Linux >> Znalost Linux >  >> Linux

Mohu prohledávat historii bash u všech uživatelů na serveru?

Použijte getent pro výčet domovských adresářů.

getent passwd |
cut -d : -f 6 |
sed 's:$:/.bash_history:' |
xargs -d '\n' grep -s -H -e "$pattern" 

Pokud jsou vaše domovské adresáře na dobře známém místě, může to být tak jednoduché jako

grep -e "$pattern" /home/*/.bash_history

Samozřejmě, pokud uživatel používá jiný shell nebo jinou hodnotu HISTFILE , to ti moc neřekne. Ani to vám neřekne o příkazech, které nebyly provedeny prostřednictvím shellu, nebo o aliasech a funkcích a nyní odstraněných externích příkazech, které byly v některém uživatelském adresáři na začátku uživatelského $PATH . Pokud chcete vědět, jaké příkazy uživatelé spustili, potřebujete účtování procesů nebo nějaký lepší systém auditu; viz Sledování aktivity na mém počítači., Jak zkontrolovat, jak dlouho proces běžel po dokončení?.


find /home -name .bash_history | xargs grep <string>

Případně:

grep string $(find /home -name .bash_history)

Všimněte si, že to pokrývá domovské adresáře ve výchozích umístěních. Bylo by lepší analyzovat /etc/passwd nebo vyvolejte getent a analyzujte jeho výstup.

for i in $(getent passwd | cut -d: -f6 ); do grep string ${i}/.bash_history; done

Můžete to udělat

find /home | grep bash_history | xargs grep "whatever"

Ale ve skutečnosti si nemyslím, že je to mnohem lepší než to, co jste si mysleli.


Linux
  1. Analýza historie Bash v Linuxu

  2. Může být Bash skript připojen k souboru?

  3. Jak nechat typ-ahead použít pro vyhledávání v historii Bash (ctrl-r)?

  1. Automatické vyčištění historie Bash?

  2. Použití grep pro vyhledávání obráceně

  3. Jak mohu vyhledat víceřádkový vzor v souboru?

  1. Jak používat příkazy historie Bash

  2. Obnovit pozici vyhledávání v historii bash

  3. Jak můžete odstranit duplikáty z historie bash?