Categories: Всячина

mini-notes-issue-14/

Мини заметок не было целых два месяца. Я знаю, вы по ним соскучились! В этом выпуске: настраиваем VNC в Ubuntu, конвертируем онлайн-книги в PDF, изучаем консольные сниферы, клонируем схемы в PostgreSQL и не только. Предыдущие выпуски: тринадцатый , двенадцатый , одиннадцатый , десятый .

1. Консольные сниферы

Если вам нужно грепнуть сетевой трафик по некоторой строке, используйте ngrep:

sudo ngrep -d lo -W byline port 8081

Для более сложных вещей лучше использовать tcpdump:

sudo tcpdump -n -q -i lo -s 0 -A src or dst port 8081

Вместо флага -A можно использовать -X, тогда пакеты будут выводиться в hex’е.

Так можно отсечь неинтересные пакеты:

sudo tcpdump -n -q -i lo -s 0 -A ‘(src or dst port 8081) and (length > 74)’

Удобно использовать tcpdump в связке со strings:

sudo tcpdump -n -i lo -s 0 -l -w ‘(src or dst port 8081) and (length > 74)’ | strings

Я лично для того, чтобы посмотреть HTTP-трафик, использую такой однострочник :

sudo tcpdump -nql -i lo -s 0 -A ‘(src or dst port 8081) and (length > 74)’ | perl -lne ‘s/^.{8}(HTTP|GET|HEAD|POST|PUT|DELETE)/$1/; print $_’

Помимо tcpdump есть еще tcpflow, который показывает только данные, без IP и TCP заголовков, но, к сожалению, не поддерживает UDP:

sudo tcpflow -i eth0 ‘src or dst port 5432’ -c -D

Если вам нужен снифер, осведомленный о существовании протоколов, используйте tshark. Это типа консольный WireShark:

sudo tshark -npi lo -d tcp.port== 8081 ,http -f ‘src or dst port 8081’ -R «http.request.method» -T fields -e ip.src -e ip.dst -e http.request.method -e http.host -e http.request.uri

Здесь -i задает интерфейс, -f — фильтр того, что нужно перехватывать, а -R — фильтр того, что нужно выводить. Часть -d tcp.port==8081,http говорит tshark декодировать трафик на 8081-ый порт, как HTTP. В конце команды перечисляются поля, которые должны выводиться.

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

sudo tshark -npi lo -d tcp.port== 8081 ,http -f ‘src or dst port 8081’ -V -R «http.request || http.response»

Вообще, tshark гениален. Если он видит в ответе, скажем:

Content-Type: application/json
Content-Encoding: gzip

… то он разжимает gzip, декодирует json и выводит в консоль результат декодирования json’а.

Еще из интересных сниферов есть urlsnarf, но в последних версиях Ubuntu он почему-то стал плохо работать. См также заметку Перехват сетевого трафика при помощи библиотеки libpcap .

2. Настройка VNC-сервера в Ubuntu

Проще всего включить Desktop Sharing, и подцепиться к машине любым VNC клиентом на :0. Но если кто-нибудь включить монитор, он сможет подглядывать за вашими действиями.

Чтобы этого не случилось, на сервере говорим:

sudo apt-get install tightvncserver gnome-session-fallback
echo «gnome-session —session=gnome-fallback» > ~ / .xsession
vncserver -geometry 1278×780 -depth 16

На клиенте:

sudo apt-get install xtightvncviewer
vncviewer 192.168.0.100: 1

Вообще-то, у вас, скорее всего, предустановленна remmina, но, как по мне, какая-то она глюкавая.

Вы можете столкнуться с забавным багом . При нажатии кнопки D у вас свернутся все окна. Лечится переходом в System Tools → System Settings → Keyboard → Shortcuts → Navigation и вешанием на Hide all normal windows какого-нибудь бесполезного сочетания, скажем, Ctr+Alt+Esc. Аналогичная фигня со стрелочками вверх и вниз. Похоже, это касается всех сочетаний, в которых используется кнопка Super.

Для остановки VNC на сервере говорим:

vncserver -kill : 1

Чтобы запустить vncviewer в полноэкранном режиме, используйте флаг -fullscreen. С помощью клавиши F8 можно работать с буфером обмена и выйти из vncviewer.

3. Как сконвертировать онлайн-книгу в PDF

Для решения этой проблемы есть такая замечательная программа wkhtmltopdf. Убунтовский пакет не умеет работать с несколькими входными HTML-файлами, поэтому качаем бинарник для Linux отсюда .

Вот так собирается PDF из набора html-файлов:

wkhtmltopdf . / html / { 1 , 2 , 3 } .html result.pdf

Также wkhtmltopdf умеет работать с URL, но качает при этом он как-то фигово, поэтому лучше заранее сохранить все на диске. В этом случае вы также сможете поправить HTML-код, если PDF получится кривой.

Программа имеет множество флагов, см wkhtmltopdf -H .

4. Связка из vim и rsync

Если вам нужно собирать код на сервере, удобно редактировать его прямо на этом сервере. Обычно в таких случаях ходят на сервер по ssh и редактируют код в прекрасном текстовом редакторе vim . Но как только интернет начинает по каким-то причинам подтупливать, писать код становится невозможно.

Поэтому в последнее время я редактирую код локально, а на сервер заливаю его таким скриптом:

#!/bin/sh

rsync -e ssh —progress
—exclude ‘deps/*/.git’
—exclude ‘*.swp’
—exclude ‘tags’
-zutr / home / eax / project eax @ eax.dev.example.com:

В результате решилась не только проблема с сетью. Теперь мне не нужно синхронизировать .zshrc или подправленные мной шаблоны behaviour’ов для vimerl . Все лежит локально, в одном месте. Удобно.

5. Как доказать провайдеру, что он теряет пакеты

Чтобы слать провайдера дэфолтным маршрутом с его предложениями попробовать купить другой роутер, используйте утилиту mtr:

eax@portege> sudo mtr -r -c 1000 -i 0.1 -n mail.ru
HOST: portege             Loss%   Snt   Last   Avg  Best  Wrst StDev
1.|— 10.0.0.1           0.0%  1000    3.1  13.2   1.0 816.6  54.3
2.|— 11.101.101.11      0.2%  1000    6.9  19.6   6.4 806.3  52.9
3.|— 12.112.211.21      0.3%  1000    7.3  20.9   3.8 889.2  59.3
4.|— 17.232.232.71      1.8%  1000    2.8  17.8   2.2 872.2  60.0
5.|— 94.132.231.49      0.2%  1000    3.0  16.8   2.5 855.4  57.7
6.|— 217.69.139.199     0.3%  1000    3.1  15.8   2.4 838.5  58.9

Сразу видно, где и какой процент пакетов теряется.

6. Как прикрутить к своему блогу «Twitter-комментарии»

Можно добавить в конце постов такую ссылку:

https://twitter.com/intent/tweet
?screen_name=afiskon
&text=%D1%82%D0%B5%D0%BA%D1%81%D1%82
&url=http://remontka.com/mini-notes-issue-14/

Пригодится, если вы используете OctoPress и не перевариваете Disqus.

7. Куча подозрительного UDP-трафика на 224.0.0.251:5353

Если iptraf в Ubuntu показывает кучу странного UDP-трафика на 224.0.0.251:5353, говорим:

sudo service avahi-daemon stop
sudo update-rc.d -f avahi-daemon remove

… и проблема уйдет.

8. Определяем версию проекта по числу коммитов

Чтобы отличить версию вашего проекта 2.14.1, собранную вчера, от версии 2.14.1, собранную сегодня, можно добавить к версии число коммитов:

$ git describe —always —tags | sed -e «s/-[^-]*$//;s/-/./»
2.14.1.187

Если вы пользуетесь Jenkins , не забудьте отключить в свойствах проекта проставление тэгов!

9. Как создать копию схемы в PostgreSQL

В отличие от MySQL в PostgreSQL есть схемы. Допустим, есть база данных, в которую ходит много пользователей, каждый из которых работает со своей схемой. Таблицы при этом у всех пользователей одинаковые. Чтобы завести еще одного пользователя с его собственной схемой, приходится немного извратиться. Один из способов решить проблему следующий.

Делаем бэкап существующей схемы:

pg_dump -h postgres.example.com -U user1 -n user1 -f dump1.sql dbname

Говорим:

sudo -u postgres psql

… и заводим нового пользователя:

CREATE USER user2 WITH password ‘qwerty’ ;
GRANT ALL privileges ON DATABASE dbname TO user2;

Заменяем имя схемы в дампе:

sed s / user1 / user2 / g dump1.sql > dump2.sql

Вообще-то, на этом шаге можно испортить данные. Надеюсь, вы используете достаточно длинные имена пользователей и названия схем, чтобы этого не случилось. Или что для вас это не критично.

Далее:

psql -h postgres.example.com dbname user2 -f dump2.sql

Если не использовать флаг -f, psql будет ругаться на использование в дампе N вместо NULL.

Еще один способ описан здесь .

10. Как собрать PDF-версию Learn You a Haskell for Great Good

Как оказалось, все довольно просто:

sudo apt-get install pandoc texlive-full
git clone git @ github.com:pvorb / learn-you-a-haskell.git
cd learn-you-a-haskell
sh pdf-en.sh
evince learn-you-a-haskell-en.pdf

Правда, texlive-full — довольно тяжелый пакет.

Дополнение: Мини заметки — выпуск 15

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 месяца ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 месяца ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 месяца ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 месяца ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 месяца ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 месяца ago