Hlavní navigace

Hrátky z řádky: Hledání s locate, whereis a grep

31. 3. 2008
Doba čtení: 4 minuty

Sdílet

Opět se setkáváme u pravidelné pondělní dávky tipů a triků z černé řádky. O hledání souborů by se dalo napsat několik dílu našeho seriálu. Dnes si ukážeme pouze základní programy. Na závěr si představíme program nmap, který umožňuje například prozkoumat TCP/IP porty nebo zjistit, co je v síti živé.

Hledání

Pro příznivce Midnight Commanderu mám dobrou zprávu. I on zvládá hledání. Spousta lidí asi ohrne nos, ale midnight zvládá víc než jen jednoduché hledání. Klávesou F9 do menu, potom nabídka command (nebo rychle klávesouESC a potom ?). Zadáváte adresář, v kterém chcete hledat nebo jej můžete zvolit tlačítkem Tree. Ve jméně souboru můžeme použít zástupné znaky * a ?. Je možné vyhledávat soubory podle jejich obsahu, k tomu je políčko content. Zde je možné používat i regulární výrazy. Když se pak zobrazí výsledek, můžete rovnou soubory prohlížet (klávesa F3) nebo editovat (F4). Když prohlížení/edit ukončíte, dostanete se zpět na seznam vyhledaných souborů. Zajímavou vlastností je tzv. panelizace. Když hledáte například *.mp3 a zobrazí se výsledek, klikněte dole na „Panelize“. Všechny nalezené soubory se zobrazí v jednom okně a můžete je třeba hromadně smazat.

Je to sice šikovná věc, ale linux/unix systémy mají pro hledání daleko mocnější nástroje, jako je treba příkaz locate a find. Podíváme se na ně.

Program locate neprochází adresářovou strukturu, pouze prohledává svou databázi, v které má zatříděné soubory a adresáře. Takže stačí zadat například:

bash-2.05b$ locate umount
/rescue/umount
/sbin/umount
/usr/local/share/swat/help/manpages/smbumount.8.html
/usr/local/share/swat/help/manpages/umount.cifs.8.html
/usr/share/man/man8/umount.8.gz
/usr/src/sbin/umount
/usr/src/sbin/umount/Makefile
...

Výhoda locate je v rychlosti, neprochází se totiž data na disku, jen se prohlíží databáze. Ta se v pravidelných časových intervalech aktualizuje (většinou denně nebo týdně) pomocí programu locate.updatedb (takto se jmenuje ve FreeBSD, v Linuxu je to updatedb). A v tom spočívá i nevýhoda – pokud jste vytvořili soubor před pár minutami, locate jej pravděpodobně nenajde. Při update databáze se indexují jen některé filesystémy; co přesně se indexuje se můžete dozvědět v konfiguraci (ve FreeBSD /etc/locate.rc).

Další utilitou je whereis. Ta vyhledává jen něco a někde:

  • v adresářích, které jsou standardně určené pro spouštění ( /bin, /sbin, /usr/bin/usr/sbin)
  • v adresáři s manuálovými stránkami
  • v adresářích uvedených v proměnné PATH
  • ve zdrojových kódech ( /usr/src)

Můžeme hledat ve všech těchto lokacích:

[pm@minastirith pm]$ whereis umount
umount: /sbin/umount /usr/share/man/man8/umount.8.gz /usr/src/sbin/umount

Nebo například jen v manuálových stránkách:

[pm@minastirith pm]$ whereis -m umount
umount: /usr/share/man/man8/umount.8.gz

Podobně se chová program which, ten ale prohledává pouze adresáře zadané v uživatelově proměnné PATH a hledá spustitelné soubory:

[root@minastirith pm]#  which mount
/sbin/mount

Which zobrazí první nalezený, zároveň je to ten, který je v adresáři v proměnné path uveden nejdříve. Pokud bychom měli například ještě druhý příkaz mount v adresáři /bin, našel by se ten. Pokud chceme vidět všechny nálezy, slouží k tomu parametr -a:

[root@minastirith pm]#  which mount
/bin/mount
/sbin/mount

Již dříve tu bylo zmiňováno prohledávání souborů podle obsahu. Následující příklad najde všechny soubory, v kterých se vyskytuje slovo poklad a nezáleží na velikosti písmen:

grep -ri poklad *

Nmap

Velice užitečná utilitka, běžně se používá ke scanování portů. Tím si můžeme stroj trochu oťukat a zjistit co na něm běží.

$nmap www.mujserver.cz
Starting Nmap 4.20 ( http://insecure.org ) at 2008-03-25 21:52 CET
Not shown: 1683 closed ports
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
25/tcp   open     smtp
80/tcp   open     http
135/tcp  filtered msrpc
136/tcp  filtered profile
...

A vidíme ftp, ssh, mail a www server. Nmap lze také použít ke zjištění, co je v síti živé:

CS24_early

root@mail ~ # nmap  -sP 192.168.0.0/24

Starting Nmap 4.20 ( http://insecure.org ) at 2008-03-25 22:00 CET
Host 192.168.0.81 appears to be up.
MAC Address: 00:1A:4B:23:D6:F4 (Unknown)
Host 192.168.0.180 appears to be up.
MAC Address: 00:14:38:95:D8:67 (Hewlett Packard)
Host 192.168.0.181 appears to be up.
MAC Address: 00:15:60:E2:F1:F2 (Hewlett Packard)
Host 192.168.0.193 appears to be up.
MAC Address: 00:0F:FE:09:46:6B (G-pro Computer)
Host 192.168.0.253 appears to be up.
Host 192.168.0.254 appears to be up.
MAC Address: 00:1C:C4:A7:E7:14 (Unknown)
Nmap finished: 256 IP addresses (6 hosts up) scanned in 7.977 seconds

Zároveň se nám dle MAC adres snaží napovědět výrobce. I to se může někdy hodit. Pokud nmap nepozná výrobce karty, můžete zkusit například www.coffer.com/mac_fin­d.

Nmap má spoustu funkcí a parametrů, spusťte si jen nmap a zobrazí se malý help. Můžete například provádět UDP scan, scanovat jen vybrané porty. Pokud budete scanovat moc, nemusí se to každému líbit a může se začít bránit – například začne omezovat počet spojení za vteřinu nebo se s vámi přestane bavit úplně.

Byl pro vás článek přínosný?

Autor článku

Petr Macek studoval aplikovanou informatiku na Jihočeské univerzitě, pracuje jako síťový specialista ve firmě Kostax, s. r. o. Baví ho především FreeBSD, sítě a monitoring Cacti.