Советы
mysql_secure_installation cвоими руками во FreeBSD
В большинстве пакетов mysql-server под Linux входи хороший скрипт mysql_secure_installation, которого очень не хватает в порте mysql во FreeBSD. Сделаем все своими руками!
› Continue reading
Как узнать версию CentOS
Для меня, старого FreeBSD-ка, было несколько неожиданно, что команда uname мне не помогла определить версию системы…
% uname -a Linux servername.ru 2.6.18-164.15.1.el5.028stab068.9 #1 SMP Tue Mar 30 18:07:38 MSD 2010 x86_64 x86_64 x86_64 GNU/Linux %
Т.е. конечно про ядро мне все тут рассказали, но вот какая версия CentOS? Загадка…
Попробовал иначе:
% cat /proc/version Linux version 2.6.18-164.15.1.el5.028stab068.9 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Tue Mar 30 18:07:38 MSD 2010 %
Уже лучше, теперь я знаю, что уши CentOS торчат из указанной версии RedHat… Хм, все равно не то!
Вот он, правильный вариант!
% cat /etc/redhat-release CentOS release 5.4 (Final) %
Так же есть утилита lsb_release:
% lsb_release -a LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch Distributor ID: CentOS Description: CentOS release 5.4 (Final) Release: 5.4 Codename: Final %
Вывод сообщения в stderr из shell скрипта
Очень полезная вещь – перенаправление потоков вывода. С ее помощью в shell скриптах можно сделать многое, в том числе и вывод сообщений в stderr. Пример простого скрипта ниже:
#/bin/sh
DEBUG=0
print_debug()
{
if [ "x$DEBUG" != "x0" ]; then
echo $* >&2
fi
}
print_debug hello world
Переменная DEBUG, если не равно 0, указывает, что нужно выводить сообщения в функции print_debug. Обычное echo выводи строку со всеми аргументами функции (переменная $*) в stdout, которые перенаправляется в stderr ( >&2 ).
Запись сообщений в syslog из shell скрипта
Логи в скриптах можно вести несколькими способами, один из самых простых – записывать новые сообщения в какой-то файл. Но мне такой подход кажется неправильным. В системе уже есть специальный инструмент для ведения логов syslog. Вот его и стоит использовать!
Для добавления сообщений в syslog есть утилита logger. В принципе может писать сообщения и в отдельный файл. Напишу небольшую функцию, которую можно будет добавлять в любой скрипт для ведения логов.
add_log_message ()
{
local logger='/usr/bin/logger'
local tag='My Script'
local port=514
local host=localhost
local facility='user'
local level='notice'
local message=$1
if [ -z $message ]; then
return 1
else
$logger -t "$tag" -p ${facility}.${level} -P $port -h $host "$message"
if [ "x$?" != "x0" ]; then
return 2
fi
fi
}
add_log_message 'Hello world'
Опция -t задает TAG, фактически TAG можно использовать для идентификации источника сообщения. Так же logger умеет отправлять сообщения syslog-у на другом сервер, т.е. легко можно организовать сбор всех типов логов на один сервер.
logger -P 514 -h logger.domain.ru 'Hello World'
По умолчанию logger пишет все сообщения в facility user с приоритетом notice, но это можно поменять используя ключ -p:
logger -p cron.warning 'Hello world'
ipset в CentOS
CentOS отличается некоторой консервативностью в версиях установленного ПО, что иногда приводит к проблемам с установкой нужной программы, не исключением стал и ipset. › Continue reading
Resize partition in FreeBSD with growfs
It’s hard to say, which partition will grow more during system work at installation time. So in one good day nagios will start alerting you about space shortage! Nowadays it’s not topical problem, but it could happen, as it was with me. › Continue reading
Изменение размера партиции в FreeBSD через growfs
Иногда при установке системы не удается предугадать, какие разделы будут расти больше, а какие меньше и в один прекрасный день nagios начинает орать о нехватке места. Вообще задача встречается все реже, так как диски все больше да и все все чаще создается они большой /. Но вот так случилось, что я с ней столкнулся. › Continue reading
mtree на страже вашей FreeBSD
К сожалению в любом программном обеспечение есть уязвимости и дыры, который могут использовать хакеры в свои целях. С момента выхода обновления или security патча до момента исправления в вашей ОС может пройти какое-то время, т.е. это потенциальная возможность получить управление ваши серверов для злоумышленника, который может оставить закладки для будущего использования даже после того, как вы все исправите. Например он может заменить файл su или sudo, даже ps вместе ls могут стать смертельно опасными! Для защиты нужно отслеживать состояние системных файлов (владельцы, права, размер, хеши и т.п.)!
Tripwire – достаточно сложный и тяжелый продукт, конечно можно поставить из портов, но в FreeBSD уже есть утилита, которая прекрасно справится с поставленной задачей. › Continue reading
Генерация случайного числа в sh
Для Linux проблема получения случайного числа в скрипте решается переменной $RANDOM, которая специфична для bash и ряда других оболочек. Для FreeBSD с sh все несколько сложнее. Есть несколько решений, например в awk есть функция rand(). Но работа с awk мне не понравилась, так что пойдем другим путем. Получилось так, что мне нужно было получить число из промежутка от 1 до 3. Эту задачу и будем решать:
get_random_number()
{
local upper=3
local lower=1
local random=`/usr/bin/head -n 1 /dev/random | cksum | cut -f1 -d" " | sed 's/^.*\([0-9]\).*/\1/'`
if [ $random -le $upper ] && [ $random -ge $lower ]; then
echo $random
return 0
else
get_random_number
fi
}
/dev/random генерирует для нас произвольные байты, далее подсчитывается их cksum, из него берем одну цифру. Если попадает в нужный диапазон – выходим, если нет запускаем функцию еще раз.
Как легко запомнить диапазоны разных классов IP сетей!
Для определения класса сети нужно смотреть на первый октет и помнить диапазон. А можно поступить проще!
Сети А класса: 0 – 127.
Или запоминаем, что в битовом исполнении сети класса А всегда выглядят так 0XXXXXXX.
Сети В класса: 128 – 191.
Или запоминаем, что первый октет всегда начинается на 10XXXXXX.
Сеть C класса: 192 – 223.
Или запоминаем, что первый октет 110XXXXX.