smartctl и новые диски

Когда в сервер устанавливаются новые диски, часто можно заметить что описания некоторых параметров S.M.A.R.T. регистров не соответствуют действительности либо вообще отствуют. Например так было после установки SSD Intel DC S3500 на сервер с “CentOS release 6.6 (Final)“:

170 Unknown_Attribute       0x0033   100   100   010    Pre-fail  Always       -       0
171 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
172 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
174 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       1

Continue reading smartctl и новые диски

Время начала и окончания действия сертификата

Как узнать время начала действия и окончания (истечения) сертификата?

echo | openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -dates | cut -d '=' -f2- | xargs -I{} date --date="{}" '+%F %T'

Для того чтобы после взаимодействия с сервером в пакетном режиме openssl завершился необходимо передать ему перевод строки. Иногда можно встретить, что ему передают файл перенаправлением из /dev/null. Оба варианта работают одинаково.
Второй вызов openssl работает уже с полученным через pipe сертификатом и достаёт из него дату начала его дествия и дату окончания действия. Затем командой cut из сертификата извлекается только дата, и наконец дата передаётся в качестве параметра команде date которая из него может сформировать дату в различных форматах.
Continue reading Время начала и окончания действия сертификата

Проверка что в sudoers все скрипты для Zabbix существуют

zabbix_agentd который используется для мониторинга сероверов, может запускать скрипты. Для большинства из этих скриптов необходимы права root. Это обеспечивается через su в файле конфигурации агента и sudoers.
Но иногда при конфигурировании множества серверов (zabbix-agentd) сталкиваешься с тем, что некоторые скрипты которые там перечислены отсутствуют на диске. Это приведёт к тому что скрипт не будет выполняться. А чтобы по-быстрому проверить я набросал скрипт который проверяет все ли скрипты или программы есть на диске и пишет имена отсутствующих. По правде говоря скрипт не обрабатывает файлы с Cmnd_Alias и файлы вложенные в каталог /etc/sudoers.d/

cat /etc/sudoers | grep -i "zabbix ALL=NOPASSWD:" | cut -d ':' -f2- | sed 's/[,]\+/\n/g' | sed -e 's/^[ \t]\+//g;s/^\(\/[^ ]*\).*$/\1/g' | while read FN ; do [ ! -e "${FN}" ] && echo "${FN} - not exists" ; done

Continue reading Проверка что в sudoers все скрипты для Zabbix существуют

Проверка GnuPG подписи OpenVPN

Как скачивать OpenVPN чтобы минимизировать риски получить поддельный инсталяционный пакет.
Нужно выполнить несколько шагов.

Проверить что открывшийся URL зашифрован TLS1.1 и выше и подписан правильной подписью.

Для этого нужно посмотреть сертификат. На момент публикации статьи сертификат для домена *.openvpn.net подписан Go Daddy Secure Certificate Authority – G2 действительным до 03/05/2016. Отпечаток SHA1:BD:4B:30:9E:65:DC:3F:7B:59:52:46:4A:1C:19:D6:BE:E4:98:5B:5A

$ echo | openssl s_client -tls1_2 -showcerts -connect openvpn.net:443 2>/dev/null | openssl x509 -fingerprint | grep 'BD:4B:30:9E:65:DC:3F:7B:59:52:46:4A:1C:19:D6:BE:E4:98:5B:5A'

Continue reading Проверка GnuPG подписи OpenVPN

Разбираемся с томами Bacula/Bareos

Много лет подряд схема именования томов в Bacula/Bareos приводила меня в полное недоумение. Я не мог понять почему свежеустановленная система резервного копирования создаёт тома в строгом соответствии с настройками прописанными в секция pool, а через какое-то время “слетает с катушек” и начинает записывать данные в старые файлы. Оказалось причина в в том, что Bacula изначально была заточена под ленточные накопители. Агалогично она поступает и с дисками: тома на дисках воспринимаются как ленты. Следствие этой особенности в том, что если Bacula создала том (файл на жёстком диске) то она НИКОГДА не удаляет его с диска. У каждого пула и задания есть параметр Volume Retention который задаёт время по истечении которого файлы попавшие в этот том бакула считает удалёнными. Если установлена опция AutoPrune = yes то bacula удалит записи из каталога (SQL). А если установлена опция ActionOnPurge = Truncate то урежет размер файла до нуля.
Continue reading Разбираемся с томами Bacula/Bareos

Где найти полный инсталлятор skype для windows

Тенденция последнего времени заключается в получении контроля над пользовательскими устройствами. Казалось бы сделано это для удобства пользователей. Зачем пытаться разобраться с секцией download где может находиться куча версий программы. Пользователь видит скачиваемую программу совсем небольшого размера. Запускает её, а она скрытно стягивает много-мегабайтный инсталятор и установливает его на компьютер пользователя не забыв при этом наставить кучу сервисов которые позволят в фоновом режиме соединяться с серверами производителя и передавать туда какие-то данные и принимать и устанавливать какие-то обновления. Так поступают многие. В их числе Adobe со своим Flash player. Так поступает Mozilla со своим Firefox и Thunderbird, хотя на их сайте ещё можно найти ссылку на полный инсталятор в языковом разделе. И MS тут не отстаёт от других производителей софта. На их сайте очень сложно найти ссылку на полный инсталятор skype. Зато можно писать статьи типа этой объясняя немногочисленной аудитории где взять то, что раньше было в разделе Download.
Continue reading Где найти полный инсталлятор skype для windows

Отключение APM в дисках подключённых через RAID контроллер

Некоторые жёсткие диски, не только ноутбучные 2.5″ но и например 3.5″ вполне серверные модели WDC WD2002FYPS-02W3B0, имеют отвратительную особенность парковать головы. Для ноутбучных дисков это вероятно оправдано и сделано чтобы исключить повреждение дисков при возможных ударах ноутбука, компьютер то мобильный. А вот для 3.5″ дисков это сделано вроде бы как для экономии электрической энергии. Но ресурс механизма парковок ограничен и через некоторое время это приводит к его износу и поломке диска. Чтобы предотвратить износ механизма принудительной парковкой головок нужно отключить APM диска.
Отключить APM в дисках можно с помощью утилиты hdparm.

hdparm -B 255 /dev/sda

Однако она не работает если диск подключён в RAID контроллер. В этом случае RAID контроллер отдаёт в систему блочное устройство без уточнения из каких дисков оно собрано. Тоесть система обращаясь к блочному устройству представленному RAID контроллером не обращается конкретно к какому-то диску. Поэтому функционал физического доступа к порту диска через имя блочного устройства ограничен.
Continue reading Отключение APM в дисках подключённых через RAID контроллер

Запись терминальной сессии

Для записи терминальной сессии можно использовать обычный подход, записывать видео. Однако в этом есть два неудобства: во-первых видео занимает много места, во-вторых из видео нельзя сделать copy&paste текстовой информации.

Оба эти недостатка отсутствуют в программе asciinema. Её файлы маленькие и поддерживается copy&paste.

Галерею работ можно посмотреть на https://asciinema.org/.
И сразу можно сделать копию для себя так как исходный код прилагается.
Исходный код плеера
Исходный код для сайта

А с помощью другой утилиты можно устроить живую демонстрацию своей консоли.

Трансляция окна своей консоли как WEB приложения

GoTTY позволяет устроить демонстрацию окна своей консоли как web приложения.

Для эмуляции терминала на JavaScript в интернет браузерах Gotty использует hterm. Gotty имеет свой websocket сервер перебрасывает PTY веб-клиентам и принимает ввод от клиентов и перебрасывает его на PTY. Идея hterm + websocket была навеяна Wetty.

Для каждого клиента подсоединяющегося к websocket GoTTY порождает новый процесс и это значит, что напрямую нельзя расшаривать терминал многим клиентам. Однако можно использовать мультиплексор терминала tmux. Но в этом случае клиенты будут находиться в режиме viewonly без передачи нажатий клавиатуры в терминал, а тот кто будет подключён локально сможет управлять терминалом.

Распространяется под лицензией MIT.
Исходники на https://github.com/yudai/gotty

Также имеется и утилита которая позволяет сделать легковесные файлы с записью работы в терминальной сессии и воспроизводить их в браузере.

Получение списка NS серверов для домена

Однострочный скрипт для получения списка ns сероверов домена.

DOMAIN="youngblog.hoster-ok.com"; TLD="${DOMAIN##*.}"; FLD="${DOMAIN%.*}"; FLD="${FLD##*.}"; echo -e "TLD:${TLD}\nFLD:${FLD}"; ROOTNS=`dig +short NS ${TLD}. | head -n 1 | sed -e 's/\.$//g'`; dig +authority +noadditional +nocomments +nostats +nocmd ${FLD}.${TLD}. @${ROOTNS} | sed -e 's/[;#%].*//g;s/^[ \t]*//g;s/[ \t]*$//g;/^$/d'
TLD:com
FLD:hoster-ok
hoster-ok.com.          172800  IN      NS      ns1.vds-ok.com.
hoster-ok.com.          172800  IN      NS      ns2.vds-ok.com.
hoster-ok.com.          172800  IN      NS      ns1.hoster-ok.com.

Принцип следующий:
Первая команда  dig +short NS ${TLD}.  (обратите внимание на точку на конце) получает корневые NS сервера которые обслуживают конкретный TLD (Top Level Domain) например .com .net .org .ru и т.д., а вторая команда  dig +authority +noadditional +nocomments +nostats +nocmd ${FLD}.${TLD}. @${ROOTNS}  получает из определённого NS @${ROOTNS} информацию по домену ${FLD}.${TLD}. (снова обратите внимание на точку на конце) информация, которую нужно включить или подавить, перечислена ключами.

Примечание!В целях балансировки нагрузки первая команда выдаёт список серверов в произвольном порядке для того чтобы те кто выбирает постоянно одну и ту же строку каждый раз получали другой сервер.