Показаны сообщения с ярлыком будни сисадмина. Показать все сообщения
Показаны сообщения с ярлыком будни сисадмина. Показать все сообщения

Сдвиг времени на Perl

Понадобилось в скрипте сгенерировать дату-время, отличающиеся от текущих на некоторое значение. Стандартная команда date это не умеет, по крайней мере в моём линупсе. Пришлось выкручиваться с помощью перла:

perl -MPOSIX -e 'print strftime("%Y-%m-%d %H:%M:S",localtime(strftime("%s",localtime())-60));'


Ключ -M говорит, что нужно подключить дополнительный модуль, -e выполняет следующие за ним операторы. "%Y-%m-%d %H:%M:%S" - формат вывода времени в формате strftime, -60 задаёт сдвиг времени. В данном случае на выходе получается дата-время на минуту меньше, чем текущее.

Cisco SIP Nat

Слишком умная циска тоже плохо,- при настройке NAT столкнулся с фееричной проблемой: циска подменяет в заголовках SIP внутренний адрес клиента на свой, при этом забывает поменять порт. В результате: софтсвич пытается отсылать NOTIFY и INVITE на порт, указанный в полях Contact и\или Via,- естественно, что пакеты к клиенту не попадают. Получается, что нет входящей связи и вообще можно считать, что SIP не работает.

Решение простое,- отключить на Cisco sip-nat и натить пакеты как обычные.
На маршрутизаторах (IOS):

no ip nat service sip tcp port 5060
no ip nat service sip udp port 5060


На Cisco PIX (ASA):

policy-map global_policy
class inspection_default
no inspect sip

Близится FreeBSD 8.0

logo_freebsdfoundation Вчера (07.07.2009) в рассылке lists.freebsd.org проскочило сообщение, что доступна первая публичная бета FreeBSD 8.
А у меня до сих пор кое-где 5 версия работает, пора апгрейдиться что-ли?

Пруфлинк: FreeBSD 8.0-BETA1 Available

Удалённая трассировка с помощью wireshark, tcpdump и ssh

В случае, когда приходится снимать много сетевых дампов на одном и том-же сервере, а клиентская машина работает под линуксом, можно использовать полезную функцию перенаправления вывода по ssh:

ssh root@127.0.0.1 "tcpdump -i bond0 -w - -s 0" | /usr/bin/wireshark -k -i -

Для ускорения процесса можно записать эту строчку в скриптовый файл, вывести ссылку на него на рабочий стол (или прописать алиас в .bashrc) и в ssh настроить авторизацию по ключу, чтобы не вводить пароль при каждом подключении.

Фрагментированный эгоизм

Довелось поизучать обмен пакетами одного широкоНЕизвестного приложения,- в процессе поиска ответа на вопрос "почему не работает то, что должно". Выяснил: в определенный момент приложение отсылает udp-пакет с одновременно установленными флагами DF (Don't Fragment) и MF(More fragments). Перевожу на наш,- отправляетя фрагментированный пакет, в котором явно указан запрет на фрагментирование. Такой вот сетевой эгоизм,- "Я фрагментирую, как умею, а ты не моги!". RFC явно такую комбинацию не запрещает вроде. Проблема позже нашлась не в этом пакете, но осадочек остался,- как-то это по несправедливо выглядит.

Настройка SSH авторизации с помощью ключей в Windows (PuTTY)


  1. С помощью PuttyGen сгенерировать приватный и публичный ssh-ключи - кнопка “Generate”. В настройках можно указать тип ключа и его размер. Примечание - при генерации ключа необходимо в произвольном порядке перемещать мышку в окне утилиты.

  2. После этого не заполняя поля Passphrase сохранить приватный ключ в файл с помощью кнопки “Save private key”, например private.key. Публичный ключ отображается в верхнем поле “Key” и имеет вид: “ssh-rsa AAAAB3NzaC1yc*что-то*uJQ== rsa-key-20090806“.

  3. Cохранить публичный ключ, например в файл rsa_pub.key, или скопировать содержимое публичного ключа в буфер обмена;

  4. Запустить ssh-клиент Putty и произвести коннект к нужному серверу.

  5. Попав на сервер, создать папку ~/.ssh (если такой ещё нет);

  6. Создать файл ~/.ssh/authorized_keys (если не существует);

  7. скопировать содержимое public.key в файл ~/.ssh/authorized_keys. ВАЖНО! Ключ в файле должен быть записан в одной строке без переносов.

  8. Изменить права доступа к файлу командой chmod 600 ~/.ssh/authorized_keys;

  9. Закрыть PuTTY;

  10. Запустить PuTTY. В настройках соединения указать путь к приватному ключу;

  11. Сохранить настройки соединения и произвести коннект к серверу. SSH-сервер запросит имя пользователя - ввести логин. Далее авторизация пройдет с использованием приватного и публичного ssh-ключей.

Настройка SSH авторизации с помощью ключей (клиент-Unix)

Шаг первый: генерируем ключи

Команда ssh-keygen с опцией -t dsa будет генерировать ключ DSA длиной 2048 бит (по умолчанию RSA 4096 бит).

$ ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
$ ssh-keygen -q -f ~/.ssh/id_dsa -t dsa


Шаг второй: устанавливаем ключи на удалённый хост

Каждый авторизованный ключ для хоста добавляется в файл ~/.ssh/authorized_keys в папке пользователя удалённого хоста, одной строкой (в формате тип-ключ-хост). Поэтому при повторной генерации, или если авторизацию какого-то хоста надо прекратить, удаляем соответствующую строку в этом файле.

$ ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<remote_server>
$ ssh-copy-id -i ~/.ssh/id_dsa.pub <user>@<remote_server>

или ещё проще:

$ cat ~/.ssh/id_dsa.pub | ssh <user>@<remote_server> "cat - >> ~/.ssh/authorized_keys"


Шаг третий: проверяем результат

$ ssh <user>@<remote_server>

Поиск для людей

В процессе работы над веб-интерфейсом к базе данных по оборудованию столкнулся с проблемой,- как сделать поиск максимально дружелюбным к пользователю? Поскольку вывод результфтов предполагался в табличном виде, первым (и, как оказалось, неправильным) вариантом было сделать поисковые поля в каждом столбце, как умеет, например Excel
Старая форма поиска.

Однако, при дальнейшей разработке выяснилось, что такая форма крайне неудобна в работе.

Бредогенератор

Повадились тут спамеры комментировать одну и ту-же запись в блоге (про менеджера евросети). Все комментарии с двух соседних ip-адресов, в каждом ссылка на сайт, сдержания бессмысленны, причём автор убил себя об стену, видимо, ещё не определился со своей половой принадлежностью, поскольку пишет то от женского лица, то от мужского.

Кошки бывают разные

Настраиваю балансировку веб-трафика на контент-свиче Cisco CSS 11500. Оказывается, цисковские программеры тоже любят пошутить,- команда show group по идее должна показывать статус групп сервисов на бэкендах. Впрочем, команда это и показывает, но вот как она это делает, в шапке вывода псевдографика рисует вот такое ;-):

sh group

Groups:


The Group
O O
/| _._ O _._ /|
(o_)=="=# | / _> | (_)="=#
| | [_] __[_] | /|
|/ | | / | | |
~~ /|/|\__/|/| ~~


Вообще, - железка забавная. Поддерживает доступ по SSH, мониторится по SNMP, MIB-файлы лежат в самом девайсе, закачать можно по FTP, но вот реализация FTP-сервера такова, что скачать файлы не удавалось ни одним штатным ftp-клиентом. Пришлось писать скрипт на питоне, уложился в 20 строк