Библиотека сайта rus-linux.net
Ассорти советов для любителей командной строки
Оригинал: Assorted Fun Linux Command Line HacksАвтор: Carla Schroder
Дата публикации: 2 октября 2014
Перевод: Н.Ромоданов
Дата перевода: октябрь 2014 г.
Сегодняшний букет советов, связанных с командной строкой, был подобран по мотивам публикаций в Command Line Magic, в котором в Twitter-е собраны любопытные советы на все случаи жизни, касающиеся использования командной строки Linux. Сегодня мы расскажем о том, как в командной оболочке нарисовать радугу, как узнать о наличии угроз в сети, как следить за звездными войнами и как в консоли создавать страшные звуки.
Радуга в командной оболочке
Следующая маленькая жемчужина кода создает при прокрутке красочное изображение, а команда Ctrl+c его останавливает:
$ grep -o --binary-files=text '[[:alpha:]]' /dev/urandom |tr -d '[a-zA-Z]' |xargs -n $(($COLUMNS/2)) |tr -d ' '| lolcat -f | pv -L80k
Рис.1: Язык пришельцев
lolcat создает цвет, pv управляет скорость прокрутки, а с помощью значения COLUMNS осуществляется управление шириной столбцов. Давайте добавим figlet для того, чтобы создавать слова (рис.1):
$ grep -o --binary-files=text '[[:alpha:]]' /dev/urandom |tr -d '[a-zA-Z]' |xargs -n $(($COLUMNS/2)) |tr -d ' '| figlet | lolcat -f | pv -L80k
Это могут быть иностранные слова. Происходит прокрутка цветных полос (рис.2):
$ yes "$(seq 231 -1 16)" | while read i; do printf "\x1b[48;5;${i}m\n"; sleep .02; done
Рис.2: Цветные полосы ASCII
Для того, чтобы получить другие результаты, измените числовые значения seq и printf.
Информация о сетевых угрозах
Вы можете получить ответ на этот вопрос, посетив сайт Is The Internet on Fire.com. Или вы можете сделать быстрый запрос из командной строки:
$ host -t txt istheinternetonfire.com istheinternetonfire.com descriptive text "Yep. https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-6271 https://www.mozilla.org/security/announce/2014/mfsa2014-73.html http://blog.jquery.com/2014/09/24/update-on-jquery-com-compromises/"
Все, что здесь делается, это с помощью команды host выполняется запрос записи типа TXT DNS для istheinternetonfire.com. Вы можете сделать это для любого сайта, хотя для большинства из них получите скучные записи SPF и все они будут непонятны. Чтобы получить более подробный результат, попробуйте команду dig:
$ dig -t txt istheinternetonfire.com ; <<>> DiG 9.9.5-3-Ubuntu <<>> -t txt istheinternetonfire.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54734 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1280 ;; QUESTION SECTION: ;istheinternetonfire.com. IN TXT ;; ANSWER SECTION: istheinternetonfire.com. 9385 IN TXT "Yep. https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-6271 https://www.mozilla.org/security/announce/2014/mfsa2014-73.html http://blog.jquery.com/2014/09/24/update-on-jquery-com-compromises/" ;; AUTHORITY SECTION: istheinternetonfire.com. 84967 IN NS a.ns.joker.com. istheinternetonfire.com. 84967 IN NS b.ns.joker.com. istheinternetonfire.com. 84967 IN NS c.ns.joker.com. ;; Query time: 34 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Tue Sep 30 20:13:48 PDT 2014 ;; MSG SIZE rcvd: 316
Попробуйте параметр short для того, чтобы получить те же результаты, что и с помощью команды host, хотя, когда вы это сделаете, вы в разделе AUTHORITY пропустите любопытные имена nameservers:
$ dig +short -t txt istheinternetonfire.com "Yep. https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-6271 https://www.mozilla.org/security/announce/2014/mfsa2014-73.html http://blog.jquery.com/2014/09/24/update-on-jquery-com-compromises/"
Итак, как вы можете создавать интересные записи TXT? Все зависит от того, каким сервером DNS вы пользуетесь. Если вы пользуетесь сервисом, предоставляющим хостинг, или регистратором доменных имен, то они предложат вам веб-форму. Если вы запускаете команду BIND или Dnsmasq, это строка в конфигурационном файле, например, как в dnsmasq.conf:
txt-record="Hellos! This is my amazing TXT record. You are l33t to find and read it."
Кавычки относятся к обычной пунктуации; они не требуются, поскольку запись TXT может содержать любой текст произвольного вида.
Следим за звездными войнами
Это уже старая, но все еще гениально интересная штука, созданная Райаном Вербером, когда ему стало скучно. У Вербера было неиспользуемое адресное пространство /24, которым он воспользовался в маршрутизаторах Cisco и PowerDNS + MySQL для создания поддельных доменных имен, например, the.DEATH.STAR и destroy.an.entire.planet. Сначала попробуйте простую трассировку без параметров:
$ traceroute 216.81.59.173 [...] 24 the.DEATH.STAR (206.214.251.46) 148.961 ms 144.843 ms 146.098 ms 25 an.armored.space.station (206.214.251.49) 146.510 ms with.enough.power.to (206.214.251.54) 144.928 ms an.armored.space.station (206.214.251.49) 148.835 ms 26 destroy.an.entire.planet (206.214.251.57) 147.232 ms with.enough.power.to (206.214.251.54) 145.949 ms 142.546 ms 27 destroy.an.entire.planet (206.214.251.57) 147.386 ms 146.206 ms 148.834 ms 28 Pursued.by.the.Empires (206.214.251.62) [...]
Первый запуск у меня был немного искажен, но в конце было выдано сообщение: Please.Try.Again.Tracerote.to.obiwan.scrye.net (Пожалуйста, попробуйте Tracerote снова для того, чтобы найти obiwan.scrye.net). Давайте, конечно, попробуем то, что написано:
$ traceroute obiwan.scrye.net
Это будет выглядеть несколько лучше. Но трассировка будет прервана до ее завершения, т.к. traceroute по умолчанию проверяет до 30 переходов hop. Поэтому давайте попробуем значение 100:
$ traceroute -m 100 obiwan.scrye.net
Полный результат вы можете увидеть на Pastebin. Насколько далеко можно зайти? Достаточно далеко, чтобы получить Rickrolled (прим.пер.: о рикроллинге, варианте троллинга, смотрите здесь). Большое спасибо, Райан Вербер!
Но результат у нрас еще не окончательный, поскольку лучше воспользоваться командами seq, xargs и dig с тем, чтобы все выглядело красиво:
$ ( seq 1 8 200 ; seq 6 8 200 ) | sort -n | xargs -I{} -n 1 dig +short -x 206.214.251.{}
Рис.3: Новый hop
Вы также можете насладиться звездными войнами в режиме ASCII:
$ telnet towel.blinkenlights.nl
Звуки из командной строки
Еще давно мы мечтали о том, как бы было потрясающе интересно запустить команду cat /proc/kcore > /dev/dsp, которая перенаправит действия ядра через конвейер в аудиоустройство и создаст странные звуки. Нам было скучно, а этим можно было бы гордиться. Теперь все по-другому и нет устройства /dev/dsp, так что попробуйте следующее:
$ sudo cat /proc/kcore | aplay Playing raw data 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
В команду aplay можно передать все, что угодно, например, tcpdump:
$ sudo tcpdump -i eth1 | aplay
Или выдать список всех файлов и каталогов, имеющихся в вашей системе:
$ ls -R / | aplay
Perl переводит английскую фразу в ... В результате я не уверен:
$ perl -e '@w = split / /, "First it rubs the lotion in, then it eats the crispy skin. Sometimes it rhymes, sometimes it doesnt."; print "$_\n"x1000 foreach @w;' | aplay
Вы можете использовать любой текст, который захотите (за исключением одинарных или двойных кавычек), и чем длиннее текст, тем дольше он воспроизводится. Для того, чтобы управлять скоростью, измените в команде print значение 1000; чем значение меньше, тем воспроизведение медленнее, и чем оно больще, тем воспроизведение быстрее.
Все будет продолжаться до тех пор, пока вы не остановите процесс с помощью команды Ctrl+c:
$ perl -e 'use bytes; for($t=0;;$t++){ print chr($t*(($t>>11|$t>>23)&83&$t>>3)); }' |play -t raw -b8 -r8k -e un -
Это звучит, как гипнотический марш робота. Чтобы получить различные эффекты, поэкспериментируйте с числовыми значениями в ($t>>11|$t>>23)&83&$t>>3).
Следующая маленькая жемчужина будет каждый раз, когда открывается новый терминал, воспроизводить крутое звучание космоса:
$ echo '(play -q -n synth sine F2 sine C3 remix - fade 0 4 .1 norm -4 bend 0.5,2399,2 fade 0 4.0 0.5 &)' >> ~/.bashrc
Эксперименты с такими командами, как эти, являются интересным способом узнать о дополнительных параметрах и о том, как можно объединять команды друг с другом. Пожалуйста, поделитесь собственными достижениями здесь в комментариях или в Твитере в Command Line Magic.