Найти всех пользователей с UID больше заданного

Опять же, полезный однострочник, для выковыривания списка реальных пользовательских учеток в Linux.
Как правило, в зависимости от дистрибутива, пользовательские аккаунты создаются с UID выше определнного (500, 1000). Те UID что меньше — как правило системные. Данный однострочник выводит пользовательские, с UID выше 500:

cat /etc/passwd| awk -F ":" '$3 > 500 {print $0}'

grep — сравнение двух файлов и вывод несовпадающих строк

Нашел архиполезную опцию grep.

Задача: сравнить два текстовых файла-списка, и выдать все строки, которые присутствуют только в одном из файлов.

Решение: grep -f ./file1 -vFx ./file2

Получаем на выходе все строки из файла file2, которых нет в file1. Строки которые есть в file1 не выводятся, соответственно.

Массовое обновление serial в зонах DNS bind.

Сегодня быстрый пост. Из серии, чтобы не забыть.
Недавно переживали перенос ДНС. Перенос был достаточно сложный, с консолидацией трех ДНС серверов в один и переезд с bind на PowerDNS. Но сейчас не об этом. Просто однострочник на sed для обновления serial в большом количестве зон bind:

sed 's/[0-9]\{10\}/2012071400/g' ./*

Данный однострочник заменит все 10-ти значные числа, на текущий номер зоны, который, напомню, по стандарту должен состоять из 10 цифр.
4 цифты — год, 2 цифры — месяц, 2 цифры день и последние две цифры номер изменения за день.
Есть подводный камень в использовании sed на FreeBSD. По умолчанию, с BSD поставляется BSD-sed, что логично, ибо BSD. Но большинство примеров в сети могут не работать или работать неправильно, ибо написаны под GNU версию SED. Решается установкой из портов gsed. Как вариант, можно попробовать изучить 2 версии sed, GNU и BSD вариант, но лично я особого смысла не вижу.

cd /usr/ports/textproc/gsed
make && make install

Ну, и соответсвенно запускается

gsed 's/[0-9]\{10\}/2012071400/g' ./*

Вот такая вот заметочка…

curl — исправляем ошибку сертификата в CentOS 5

Столкнулся с проблемой. При попытке выполнить:

curl 'https://github.com'

Получил в плечи следующий вывод:

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

Вариант обхода проблемы запуск команды с параметром -k :

curl -k 'https://github.com'

Однако при использовании изнутри скриптов, это может быть не всегда удобно. Решением является установка свежего ca-bundle сертификата с сайта curl. Для CentOS это будет выглядеть следующим образом:

mkdir /root/backup
cp /etc/pki/tls/certs/ca-bundle.crt /root/backup/
curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Установка eAccelerator на Debian Squeeze

В репозиториях Debian отсутствует eAccelerator, по религиозным лицензионным соображениям. Официально рекомендуется использовать APC, однако eAccelerator привычнее мне и клиентосам. Будем ставить. Ниже изложен вест процесс. Подробнее

mysqldump — решение проблемы Got error: 29: File ‘./test/test.MYD’ not found (Errcode: 24) when using LOCK TABLES

Столкнулся с проблемой при бекапе сервера БД MySQL.
При попытке дампа базы с помощью:

mysqldump -Q -q -e -A -R --single-transaction --add-drop-table

постоянно получал ошибку: Got error: 29: File ‘./test/test.MYD’ not found (Errcode: 24) when using LOCK TABLES
Дальнейшее исследование вопроса показало, что ошибка возникает при большом количестве таблиц.

Решения два.

1. Увеличить значение open_files_limit
2. Добавить —single-transaction в параметры mysqldump, чтобы получить строку вида:

mysqldump -Q -q -e -A -R --single-transaction --add-drop-table

Блокировка контента через .htaccess

Периодически возникает необходимость заблокировать некоторые URL, часто из за проблем с DMCA и копирастами. Возможность убрать контент физически есть не всегда, например, если URL генерируется поисковым запросом. И вот тут на помощь приходит .htaccess

Примерный код блокировки выглядит следующим образом:

RewriteEngine On
RewriteCond %{QUERY_STRING} .*illegal.* [NC]
RewriteRule .* - [F,L,NC]

Таким образом, блокируются любые URL содержащие подстроку illegal.

CentOS: Установка Ruby on Rails + rvm + passenger + apache

Появилась необходимость установить RoR на CentOS. Поскольку в стандартных репозиториях CentOS ruby не первой свежести, пришлось изгаляться. Для установки нужной версии ruby будем использовать rvm (Ruby version manager). Подробнее