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 -rn В некоторых случаях для получения списка директорий в текущем каталоге может оказаться полезным псевдоним 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 Burning 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 @kernel.org Преобразование IP-адреса в шестнадцатеричный формат, может понадобиться, например, при настройке капризного бездискового клиента: $ printf "%02X%02X%02X%02X\n" 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 |