Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #104, АВГУСТ 2007 г.

Tips'n'tricks юниксоида

Andrey Matveev

Хакер, номер #104, стр. 105

(andrushock@real.xakep.ru)

Доблестный юниксоид! Представляю твоему вниманию очередную подборку различных трюков, рекомендаций и советов, касающихся *nix-систем.

Shell

Поменять в файле myfile.txt все слова luck на hack с помощью perl:

$ perl -pi -e 's/luck/hack/g' myfile.txt

То же самое проделывается в vi/vim следующим образом:

$ vi myfile.txt

:1,$s/luck/hack/g

Убрать все символы ^M из DOS'овского файла:

$ col -bx < dosfile.txt > newfile.txt

В текущей директории привести имена всех файлов и каталогов к нижнему регистру:

$ "ls" | while read name; do mv "$name" "`echo $name | tr A-Z a-z`"; done

Поиск заданного слова в каталоге /usr/src:

$ find /usr/src -type f -exec grep -i hack {} ;

Более информативный вывод (с помощью этого способа я нашел кучу багов в OpenBSD):

$ find /usr/src -type f -name '*.[chy]' -print | xargs grep -inC hack

Получить размер всех директорий в нужном каталоге:

$ find /usr/src -maxdepth 1 -type d -print | xargs du -sk | sort -

В некоторых случаях для получения списка директорий в текущем каталоге может оказаться полезным псевдоним dir:

alias dir='ls -alF | grep ^d'

Как вариант:

alias dir='ls -alF | grep /$'

Создать пайп для работы с программами, которые не умеют должным образом работать с STDIN/STDOUT (find приведен здесь только для примера, всю нижеследующую конструкцию можно заменить более простой: find /usr/src | more):

$ mkfifo ~/myinout

$ find /usr/src > ~/myinout &

$ more -f ~/myinout

Преобразовать справочную man-страницу в обычный текстовый файл:

$ man pf.conf | col -b > ~/pf.txt

Укороченная запись для создания резервной копии файла:

# cp /etc/passwd{,.bak}

То же самое, но с учетом текущей даты:

# cp /etc/passwd{,_`date +%d%m%Y`.bak}

Удалить все пустые строки из файла test.in:

$ sed -e '/^$/d' test.in > test.out

Изменить размер всех фоток в текущей директории (утилита convert входит в пакет ImageMagick):

$ for i in *.jpg; do convert -resize 1024x768 -quality 90 $i new-$i.jpg; done

Просмотр всех установленных сочетаний клавиш в bash:

$ bind -p | egrep -v '^#|sel|low'

System

Получить полный листинг активных правил iptables:

# iptables -t nat -L -n -v

# iptables -t mangle -L -n -v

# iptables -t filter -L -n -v

Чтобы насильно обновить rpm-пакаджи, используй:

# rpm -Uvh --nodeps --force *.rpm

Содержимое системного журнала можно вывести на отдельную консоль, доступную по комбинации клавиш <Ctrl+Alt+F12>:

$ tail -f /var/log/messages > /dev/tty12

Монтирование образа, созданного в Windows с помощью Nero Buing Rom:

# mount -t udf,iso9660 -o loop,ro,offset=307200 image.nrg /mnt

Линуксовое семейство ls*-команд:

lsof - список всех открытых файлов;

lsmod - список всех загруженных модулей;

lspci - список PCI-устройств;

lsusb - список USB-устройств;

lsscsi - список SCSI-устройств;

lshw - полный список всех присутствующих в компьютере устройств.

Network

Получение нужного RFC (в данном случае по IPsec) с помощью штатной программы whois:

$ whois -h whois.rfc.org.uk 2401 | less

Чтобы узнать текущие версии ядер Linux, достаточно набрать:

$ finger @keel.org

Преобразование IP-адреса в шестнадцатеричный формат, может понадобиться, например, при настройке капризного бездискового клиента:

$ printf "%02X%02X%02X%02Xn" 192 168 5 253 C0A805FD

# ln -s /tftpboot/boot.net /tftpboot/C0A805FD.SUN4M

Чтобы посмотреть список своих раcшаренных SMB и NFS-ресурсов, набирай:

$ smbclient -n -L 127.0.0.1

$ showmount -e

Ловим весь входящий трафик, исключая при этом трафик, генерируемый нашей ssh-сессией (здесь 212.34.XX.YY - сервер, 87.240.XX.YY - клиент):

# /usr/sbin/tcpdump -i fxp0 -nnnttt 'dst host 212.34.XX.YY and not (src host 87.240.XX.YY and dst port 22)'

Чтобы протестировать работу сетевого сервиса, который работает через SSL, выполняем:

$ openssl s_client -connect 192.168.1.1:443

Содержание
ttfb: 38.89012336731 ms