четверг, 5 декабря 2013 г.

Как автоматически восстанавливать лимиты на интернет и реконфигурировать SAMS каждый месяц


1.       Лимиты на интернет удобно запоминать в поле ip текущего пользователя
1.1 Для уже созданных пользователей его легко заполнить, выполнив следующий запрос в базе squidctrl:

UPDATE squidusers set ip = quotes where quotes is not null

1.2   Для новых пользователей заводим себе привычку дополнять поле ip информацией о лимите на инет.

2.       В файлик (например) /root/scripts/sams_reconfig.sql записываем следующий запрос:

UPDATE squidusers set quotes = ip where ip is not null

3.       В /etc/cron.monthly/sams_reconfig.sh пишем следующее:

#!/bin/sh

CONF=/etc/sams.conf

if [ ! -r "${CONF}" ] ; then
echo "${CONF} is not readable"
exit 1
fi

DBUSER=`grep ^MYSQLUSER "${CONF}" | awk -F'=' '{print $2}'`
DBPASS=`grep ^MYSQLPASSWORD "${CONF}" | awk -F'=' '{print $2}'`
DBNAME=`grep ^SAMS_DB "${CONF}" | awk -F'=' '{print $2}'`
CACHENUM=`grep ^CACHENUM "${CONF}" | awk -F'=' '{print $2}'`

if [ -z "${DBUSER}" ] || [ -z "${DBPASS}" ] || [ -z "${DBNAME}" ] || [ -z "${CACHENUM}" ] ; then
[ -z "${DBUSER}" ] && echo "MYSQLUSER is not defined in ${CONF}"
[ -z "${DBPASS}" ] && echo "MYSQLPASSWORD is not defined in ${CONF}"
[ -z "${DBNAME}" ] && echo "SAMS_DB is not defined in ${CONF}"
[ -z "${CACHENUM}" ] && echo "CACHENUM is not defined in ${CONF}"
exit 2
fi

CMD="mysql --user=\"${DBUSER}\" --password=\"${DBPASS}\" --database=\"${DBNAME}\" < /root/scripts/sams_reconfig.sql"

eval ${CMD}

CMD="mysql --user=\"${DBUSER}\" --password=\"${DBPASS}\" --database=\"${DBNAME}\" -ss --execute=\"INSERT INTO reconfig (\\\`number\\\`, \\\`service\\\`, \\\`action\\\`) VALUES (${CACHENUM}, 'squid', 'reconfig');\""

eval ${CMD}

exit $?


Ну, там делаем скрипт исполняемым, и все: каждый месяц данные о лимитах будут заменяться значениями из поля ip, после этого будет производиться реконфигурирование squid

четверг, 28 ноября 2013 г.

Запуск zabbix-agent из-под другого пользователя

Столкнулся с интересной проблемой...
Остановил Xen-server и после старта выяснилось, что zabbix-agent не поднимается с сообщением:

# service zabbix-agent start
Starting ZABBIX agent: zabbix_agentd [30451]: user zabbix does not exist
zabbix_agentd [30451]: cannot run as root!
                                                           [FAILED]


Решение такое - добавляем пользователя zabbix:
# useradd -M -g zabbix -s /sbin/nologin zabbix

Запускаем, и видим в логах:
# tail -f /var/log/zabbix/zabbx-agent.log
...
zabbix_agentd [11587]: cannot create PID file [/var/run/zabbix/zabbix_agentd.pid]: [13] Permission denied
...

Изменяем права доступа:
chown -R zabbix:zabbix /var/run/zabbix

И вуаля - zabbx стартует и работает...

# service zabbix-agent start
Starting ZABBIX agent:                                     [  OK  ]

вторник, 26 ноября 2013 г.

Удаление файлов старше определенной даты в linux/unix

Удаляем все файлы из каталога /somedir, возраст которых превышает 140 суток
Способ 1
find /somedir -mtime +140 -exec rm {} \;

Способ 2
find /somedir -mtime +140 -delete

воскресенье, 17 ноября 2013 г.

Как написать правило SNAT в iptables для интерфейса с динамическим IP

Прихожу на работу утром, а бухгалтера жалуются, что не работает "Система Город".
Для подключения используется "централизованный" OpenVPN на роутере предприятия.
Проверяю состояние интерфейса:


и маршрутизацию:
# route -n | grep 10.221.128
10.221.128.0    0.0.0.0         255.255.128.0   U     0      0        0 tap0


 - все в порядке.
Проверяю телнетом со своего компа - не проваливается.
Хм.
Рестартанул скрипт rc.firewall - не помогает.
Смотрю tcpdump-ом на интерфейсе роутера:

# tcpdump -qnn -i tap0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tap0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:03:20.927793 IP 10.221.130.209.60475 > 10.221.128.1.3389: tcp 0
09:03:22.166023 ARP, Request who-has 10.221.130.209 tell 10.221.128.1, length 28
09:03:23.926820 IP 10.221.130.209.60475 > 10.221.128.1.3389: tcp 0
09:03:24.674988 ARP, Request who-has 10.221.130.209 tell 10.221.128.1, length 28

Отсюда понимаю, что система не знает ничего об адресе 10.221.130.209 - а это по идее адрес нашего интерфейса tap0.
Проверяю состояние tap0:
# ifconfig tap0
tap0      Link encap:Ethernet  HWaddr B2:2F:7F:0B:A3:3B
          inet addr:10.221.141.98  Bcast:10.221.255.255  Mask:255.255.128.0
          inet6 addr: fe80::b02f:7fff:fe0b:a33b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1532  Metric:1
          RX packets:1804 errors:0 dropped:0 overruns:0 frame:0
          TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:75768 (73.9 KiB)  TX bytes:2560 (2.5 KiB)

Ага, поменялся адрес интерфейса tap0, и правила в скрипте rc.firewall стали недействительными.
Уточняю у админов системы город - поменялось оборудование у них, а ip-шники присваиваются динамически.
Что же делать, думаю? Нужно в скрипте rc.firewall вместо константы использовать выражение, которое бы возвращало ip-адрес интерфейса tap0

Чуть чуть поразмыслив, нахожу вот такое решение:

/sbin/ifconfig tap0 | grep 'inet addr:' | cut -d: -f2 | awk '{print $1}'

и добавляю соответствующую переменную в скрипт rc.firewall:

GOROD_IP=`/sbin/ifconfig tap0 | grep 'inet addr:' | cut -d: -f2 | awk '{print $1}'`

Перезапускаю скрипт:
# /etc/rc.d/rc.firewall

Проверяю правила:
# iptables-save | grep 10.221
-A POSTROUTING -s 192.168.0.0/24 -d 10.221.128.0/24 -o tap0 -j SNAT --to-source 10.221.141.98
-A INPUT -s 10.221.0.0/16 -d 10.221.141.98/32 -p tcp -m tcp --sport 3389 --dport 1024:65535 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -d 10.221.0.0/16 -p tcp -m tcp --sport 1024:65535 --dport 3389 -j ACCEPT
-A FORWARD -s 10.221.0.0/16 -d 192.168.0.0/24 -p tcp -m tcp --sport 3389 --dport 1024:65535 -j ACCEPT
-A OUTPUT -s 10.221.141.98/32 -d 10.221.0.0/16 -p tcp -m tcp --sport 1024:65535 --dport 3389 -j ACCEPT

Вижу правильный IP в последнем правиле - все в порядке, теперь можно спать спокойно...

среда, 13 ноября 2013 г.

Программный рэйд на RHEL4

Достался рабочий сервер Oracle.
Стоит задача поднять рэйд.
Аппаратного нет, поэтому создаем программный.

Все работы производятся прямо на боевой системе, база данных остановлена.

Смотрим имеющиеся разделы (/dev/sda), создаем на втором диске (/dev/sdb) разделы для программного raid:
VBNKSB->/home/it3# fdisk -l

Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *           1          13      104394+  83  Linux
/dev/sda2              14      121600   976647577+  8e  Linux LVM

Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1   *           1          62      497983+  fd  Автоопределение Linux raid
/dev/sdb2              63        1036     7823655   fd  Автоопределение Linux raid
/dev/sdb3            1037      121601   968438362+  fd  Автоопределение Linux raid

После создания меняем тип разделов на fd (Linux raid), устанавливаем загрузочный флаг на /dev/sdb1.
К стати, точки монтирования спланированы следующим образом:
/dev/sdb1 - /boot
/dev/sdb2 - /swap
/dev/sdb3 - /
(в последствии /dev/sdb1 станет /dev/md0, /dev/sdb2 -> /dev/md1 и т.д.)


Сохраняем изменения, перезагружаем систему.

Создадим устройства MD на втором диске, но перед созданием желательно затереть нулями разделы:
dd if=/dev/zero of=/dev/sdb1 bs=4096 && dd if=/dev/zero of=/dev/sdb2 bs=4096 && dd if=/dev/zero of=/dev/sdb3 bs=4096

Причем, /dev/sdb3 достаточно большой и его затирание протекает долго, поэтому можно ограничиться несколькими секундами после запуска последней команды.

Создаем устройства md:

# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing
 # mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb2 missing
 # mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdb3 missing

Создадем файловые системы на RAID:

  # mkfs.ext3 /dev/md0 &&  mkfs.ext3 /dev/md2 && mkswap /dev/md1

Клонируем загрузочный раздел боевого винта на загрузочный раздел raid:
# dd if=/dev/sda1 of=/dev/md0 bs=4096

Монтируем корневой раздел raid:
# mkdir /mnt/root
# mount /dev/md2 /mnt/root

Копируем систему на новый раздел:
# cp -axvp / /mnt/root

 Редактируем fstab для монтирования root раздела с RAID:
# nano /mnt/root/etc/fstab
вместо строки 
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
пишем
/dev/md2                /                       ext3    defaults        1 1

вместо строки
LABEL=/boot             /boot                   ext3    defaults        1 2
пишем 
/dev/md0                /boot                   ext3    defaults        1 2

вместо
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
пишем
/dev/md1                /swap                   swap    defaults        0 0

Создаем загрузочный образ для RAID:
# mkdir /mnt/root/initrd-raid
# cd /mnt/root/initrd-raid
# mkinitrd -v --fstab=/mnt/root/etc/fstab /mnt/root/initrd-raid/initrd-`uname -r`-raid.img `uname -r`
# cd /mnt/root/initrd-raid
# zcat initrd-`uname -r`-raid.img | cpio -i

Редактируем файл init:
# nano init
добавляем после
   raidautorun /dev/md2
две строки:
raidautorun /dev/md0
raidautorun /dev/md1

Монтируем новый загрузочный раздел в /mnt/root/boot
mount /dev/md0 /mnt/root/boot

Копируем новый диск в каталог /mnt/boot
# find . -print | cpio -o -Hnewc | gzip -c > /mnt/root/boot/initrd-`uname -r`-raid.img
# rm /mnt/boot/initrd-2.6.18-92.el5.img
# ln -s initrd-`uname -r`-raid.img /mnt//root/boot/initrd-2.6.18-92.el5.img

Редактируем загрузочное меню:
nano /mnt/root/boot/grub/grub.conf

изменяем строку  kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/xxx
на
 kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/md2 rhgb quiet

Устанавливаем grub на RAID
# for i in dev proc sys; do mount -o bind /$i /mnt/root/$i; done
# chroot /mnt/root
# grub-install --recheck --no-floppy /dev/md0

Выходим из chroot
# Ctrl+d

Размонтируем файловые системы!!!
# for i in dev proc sys; do umount /mnt/root/$i; done
# umount /mnt/root/boot
# umount /mnt/root

Перезагружаем сервер и в BIOS выбираем загрузку с нужного нам диска.
Убеждаемся, что загрузились с диска, являющегося членом RAID-массива

# df -h
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/md2              910G  721G  143G  84% /
/dev/md0               99M   14M   80M  15% /boot
tmpfs                 5,9G     0  5,9G   0% /dev/shm

Копируем куда-нибудь таблицу разделов диска, являющегося членом RAID-массива:

# fdisk -l /dev/sdb

Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1   *           1          62      497983+  fd  Автоопределение Linux raid
/dev/sdb2              63        1036     7823655   fd  Автоопределение Linux raid
/dev/sdb3            1037      121601   968438362+  fd  Автоопределение Linux raid

Создаем точно такие же разделы на /dev/sda:

# fdisk /dev/sda

Команда (m для справки): p

Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *           1          13      104394+  83  Linux
/dev/sda2              14      121600   976647577+  8e  Linux LVM

Команда (m для справки): d
Номер раздела (1-4): 2

Команда (m для справки): d
Выбранный раздел 1

Команда (m для справки): n
Действие команды
   e   расширенный
   p   основной раздел (1-4)
p
Номер раздела (1-4): 1
Первый цилиндр (1-121601, по умолчанию 1):
Используется значение по умолчанию 1
Последний цилиндр или +size или +sizeM или +sizeK (1-121601, по умолчанию 121601): 62

Команда (m для справки): p

Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1               1          62      497983+  83  Linux

Команда (m для справки): t
Выбранный раздел 1
Шестнадцатеричный код (введите L для получения списка кодов): fd
Системный тип раздела 1 изменен на fd (Автоопределение Linux raid)

Команда (m для справки): p

Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1               1          62      497983+  fd  Автоопределение Linux raid

Команда (m для справки): a
Номер раздела (1-4): 1

Команда (m для справки): p

Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *           1          62      497983+  fd  Автоопределение Linux raid

Команда (m для справки): n
Действие команды
   e   расширенный
   p   основной раздел (1-4)
p
Номер раздела (1-4): 2
Первый цилиндр (63-121601, по умолчанию 63):
Используется значение по умолчанию 63
Последний цилиндр или +size или +sizeM или +sizeK (63-121601, по умолчанию 121601): 1036

Команда (m для справки): t
Номер раздела (1-4): 2
Шестнадцатеричный код (введите L для получения списка кодов): 82
Системный тип раздела 2 изменен на 82 (Linux своп / Solaris)

Команда (m для справки): p

Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *           1          62      497983+  fd  Автоопределение Linux raid
/dev/sda2              63        1036     7823655   82  Linux своп / Solaris

Команда (m для справки): t
Номер раздела (1-4): 2
Шестнадцатеричный код (введите L для получения списка кодов): fd
Системный тип раздела 2 изменен на fd (Автоопределение Linux raid)

Команда (m для справки): p

Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *           1          62      497983+  fd  Автоопределение Linux raid
/dev/sda2              63        1036     7823655   fd  Автоопределение Linux raid

Команда (m для справки): n
Действие команды
   e   расширенный
   p   основной раздел (1-4)
p
Номер раздела (1-4): 3
Первый цилиндр (1037-121601, по умолчанию 1037):
Используется значение по умолчанию 1037
Последний цилиндр или +size или +sizeM или +sizeK (1037-121601, по умолчанию 121601):
Используется значение по умолчанию 121601

Команда (m для справки): t
Номер раздела (1-4): 3
Шестнадцатеричный код (введите L для получения списка кодов): fd
Системный тип раздела 3 изменен на fd (Автоопределение Linux raid)

Команда (m для справки): p

Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *           1          62      497983+  fd  Автоопределение Linux raid
/dev/sda2              63        1036     7823655   fd  Автоопределение Linux raid
/dev/sda3            1037      121601   968438362+  fd  Автоопределение Linux raid

Команда (m для справки): w
Таблица разделов была изменена!

Вызывается ioctl() для перечитывания таблицы разделов.

ПРЕДУПРЕЖДЕНИЕ: Перечитывание таблицы разделов завершилось неудачей с ошибкой 16: Устройство или ресурс занято.
Ядро все еще использует старую таблицу.
Новая таблица будет использована при следующей перезагрузке.
Синхронизируются диски.


Перезагружаем сервер...
# shutdown -r now

 Теперь можно включать первый диск в RAID:

# mdadm -a /dev/md0 /dev/sda1
mdadm: added /dev/sda1
# mdadm -a /dev/md1 /dev/sda2
mdadm: added /dev/sda2
# mdadm -a /dev/md2 /dev/sda3
mdadm: added /dev/sda3

Процесс синхронизации (ребилда) массива можно смотреть с помощью команды:
# watch -n 1 cat /proc/mdstat

После завершения ребилда вносим последние изменения в настройки:

# mdadm --detail --scan >> /etc/mdadm/mdadm.conf

И перезагружаемся. Для корректной загрузки в случае отказа одного из дисков, требуется настроить в BIOS загрузку системы с обоих жестких дисков по-очереди.

Вот и все  на этом настройка software RAID1 завершена. Все необходимые команды для работы с RAID можно найти здесь http://xgu.ru/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%B9_RAID_%D0%B2_Linux#.D0.94.D0.BE.D0.B1.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BD.D0.BE.D0.B2.D0.BE.D0.B3.D0.BE_.D0.B4.D0.B8.D1.81.D0.BA.D0.B0

Основа для данной статьи взята отсюда >> http://www.mahno.su/jexr/http://pastebin.com/psaWg7QK

Как выполнить проверку целостности программного RAID-массива md0:
echo 'check' >/sys/block/md0/md/sync_action

Как посмотреть нашлись ли какие-то ошибки в процессе проверки программного RAID-массива по команде check или repair:
cat /sys/block/md0/md/mismatch_cnt

Для наблюдение за md-массивами добавляем в /etc/rc.d/rc.local следующую строку:

mdadm --monitor --scan --delay=120 -m admin@example.com --daemonise > /var/run/mdadm/mdadm.pid

понедельник, 4 ноября 2013 г.

rpmdb: Lock table is out of available locker entries

В общем, это сообщение говорит о том, что испорчена база rpmdb

Я забэкапил каталог:
tar cvzf rpm-backup.tar.gz /var/lib/rpm
Удалил битые файлы базы данных, которые использует yum и rpm:
rm /var/lib/rpm/__db.00*
Пересоздал файлы базы:

rpm --rebuilddb

четверг, 8 августа 2013 г.

Сentos добавление жесткого диска

1. Загрузить операционную систему, войти с правами суперпользователя и выполнить команду dmesg.
Имея размер винчестера, и зная в каком SATA порту он стоит, можно прикинуть как определило наше устройство ядро Linux. Предположим sdc.
2. Теперь необходимо создать на новом HDD раздел. Это приведёт к удалению всей имеющейся на нем информации. Поэтому определять какой винчестер наш в п.2 надо особенно внимательно.
Для этого запускаем /sbin/fdisk /dev/sdc
Теперь задаем команды, нажатием кропки «m» вызывается справка.
Смотрим, какие есть уже разделы «p», удаляем «d» если они есть, задаем новую на весь винчестер «n», «p», «1″, «нажать Enter», «нажать Enter», «w».
Раздел готов. Это раздел на весь винчестер.
3. Необходимо отформатировать новый раздел командой /sbin/mkfs.ext3 /dev/sdc1
На все, что спросит программа форматирования можно нажать клавишу Enter, но скорее всего ничего она не спросит.
4. Создаём новую точку монтирования и монтируем новый винчестер.
Предположим, что существует правило по которому новые винчестеры, монтируются в каталоги, называемые dataN и находящиеся в корневом каталоге. Т.е. необходимо посмотреть, какие есть такие каталоги в / и назначить вместо N в имени каталога, порядковое число от 0 и далее.
А теперь смонтируем в этот каталог наш новый винчестер.
/bin/mount /dev/sdc1 /data1
5. Проверяем какие разделы у нас есть на этом этапе командой df -h
6. Добавляем винчестер в конфигурацию системы, для того чтобы он подсоединялся на этапе загрузки системы.
Редактируем /etc/fstab добавляя в него строку:
/dev/sdc1 /data1 ext3 defaults 1 2
В конце файла, обязательно необходимо оставить пустую строку.
7. Перегружаемся и проверяем командой df -h нормально ли примонтировался наш винчестер после цикла перегрузки.
8. Вслучае если что то пошло не так и система начинает грузится «файловая система доступна только для чтения»  для редактирования fstab в консоле надо смонтировать диск для чтения
mount -oremount,rw /

среда, 31 июля 2013 г.

xenserver 6.1 + smartmontools + mailx

Загружаем mailx

wget http://vault.centos.org/5.4/os/i386/CentOS/mailx-8.1.1-44.2.2.i386.rpm

HS4->/home/it3/distr# rpm -ihv mailx-8.1.1-44.2.2.i386.rpmPreparing...
########################################### [100%] 1:mailx ########################################### [100%]

У меня smartmontools установлен по умолчанию:
HS4->/home/it3/distr# rpm -qa | grep smartmontools
smartmontools-5.41-2.el5.xs1033#


Проверяем статус дисков:

smartctl -d ata -a /dev/sda

HS4->/home/it3/distr# smartctl -d ata -a /dev/sda
smartctl 5.41 2011-06-09 r3365 [i686-linux-2.6.32.43-0.4.1.xs1.6.10.734.170748xen] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Device Model:     ST2000DM001-1CH164
...
...


Правим конфиг файл

mcedit /etc/smartd.conf
# DEVICESCAN may be followed by any desired Directives.

/dev/sda -d ata -a -I 194 -W 4,35,45 -R 5 -s (S/../.././02|L/../../6/03) -t -m admins@tb22.ru -o on -S on
/dev/sdb -d ata -a -I 194 -W 4,35,45 -R 5 -s (S/../.././02|L/../../6/03) -t -m admins@tb22.ru -o on -S on

Проверяем и включаем автостарт smartd

HS4->/home/it3/distr# chkconfig --list | grep smartd
smartd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
HS4->/home/it3/distr# chkconfig smartd on
HS4->/home/it3/distr# chkconfig --list | grep smartd
smartd          0:off   1:off   2:on    3:on    4:on    5:on    6:off

Запускаем smartd и смотрим лог:


HS4->/home/it3/distr# service smartd start
Starting smartd:                                           [  OK  ]
HS4->/home/it3/distr# grep smartd /var/log/messages
Aug  1 13:26:49 HS4 smartd[12646]: smartd 5.41 2011-06-09 r3365 [i686-linux-2.6.32.43-0.4.1.xs1.6.10.734.170748xen] (local build)
...
...
...
has fork()ed into background mode. New PID=12648.


Правим конфиг ssmtp
# /etc/ssmtp.conf -- a config file for sSMTP sendmail.
#
root=postmaster
mailhub=mail.pixsoftware.de
rewriteDomain=pixsoftware.de
hostname=server32.pixsoftware.de



В том случае, если используется RAID-контроллер (в моем случае на двух серверах установлен Adaptec RAID 6405T), статус дисков проверяем следующей командой:

smartctl -d sat --all /dev/sgX

соответственно строки в /etc/smartd.conf будут следующие:
/dev/sg1 -d sat -a -I 194 -W 4,35,45 -R 5 -s (S/../.././02|L/../../6/03) -t -m admins@tb22.ru -o on -S on
/dev/sg2 -d sat -a -I 194 -W 4,35,45 -R 5 -s (S/../.././02|L/../../6/03) -t -m admins@tb22.ru -o on -S on


После этого идем в серверную и вырубаем кондиционер.
Через некоторое время в логах появляются следующие строки:

Aug  1 16:25:27 HS1 smartd[3154]: Monitoring 2 ATA and 0 SCSI devices
Aug  1 16:25:27 HS1 smartd[3154]: Device: /dev/sg1 [SAT], initial Temperature is 21 Celsius (Min/Max ??/21)
Aug  1 16:25:27 HS1 smartd[3154]: Device: /dev/sg2 [SAT], initial Temperature is 22 Celsius (Min/Max ??/22)
Aug  1 16:25:27 HS1 smartd[3156]: smartd has fork()ed into background mode. New PID=3156.
Aug  1 16:55:28 HS1 smartd[3156]: Device: /dev/sg1 [SAT], Temperature changed +5 Celsius to 26 Celsius (Min/Max 26!/26!)
Aug  1 16:55:28 HS1 smartd[3156]: Device: /dev/sg1 [SAT], SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 79 to 74
Aug  1 16:55:28 HS1 smartd[3156]: Device: /dev/sg1 [SAT], SMART Usage Attribute: 195 Hardware_ECC_Recovered changed from 47 to 46
Aug  1 16:55:28 HS1 smartd[3156]: Device: /dev/sg2 [SAT], Temperature changed +4 Celsius to 26 Celsius (Min/Max 26!/26!)
Aug  1 16:55:28 HS1 smartd[3156]: Device: /dev/sg2 [SAT], SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 78 to 74


Для проверки статуса дисков, подключенных к Adaptec RAID контроллеру можно также использовать следующие команты:
# /usr/StorMan/arcconf getconfig 1 | grep State
# /usr/StorMan/arcconf getconfig 1 | grep -B 3 State

вторник, 30 июля 2013 г.

Подключаем дополнительные репозитории RHEL

Понадобилось поднять apcupsd на RHEL 4 и RHEL 5.2 (обе x86_64)
Потратил пару часов, пока нашел нужные репы. Вот ссылка на оригинал.

Для CentOS/RedHat 5.x выполняем:
# rpm -Uvh http://elrepo.org/elrepo-release-5-3.el5.elrepo.noarch.rpm
Проверим подключился ли репозиторий:
# yum repolist | grep elrepo
* elrepo: mirrors.ircam.fr
elrepo        ELRepo.org Community Enterprise Linux Repository — el6         213
Перейдём к установке репозитория Epel.
Для CentOS/RedHat 5.x выполняем последовательно:
# wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
# rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
Далее — открываем для редактирования файл /etc/yum.repos.d/remi.repo, и меняем строку:
enabled=0
на:
enabled=1
Проверим подключился ли репозиторий:
# yum repolist | grep epel
* epel: ftp.colocall.net
epel          Extra Packages for Enterprise Linux 6 — i386                 7,000
После этого
yum install apcupsd пробежал, как и положено, подтянув зависимости.

четверг, 11 июля 2013 г.

Настройка Zabbix-агента на XenServer 6.1

На каждый сервер, параметры которого нужно мониторить, необходимо установить zabbix-agent.
Устанавливаем репозиторий l-sys.
HS4->/home/it3# rpm -ihv http://centos.l-sys.ru/6/i386/l-sys-repo-1.0-2.noarch.rpm

Устанавливаем Zabbix-агент.
HS4->/home/it3# yum install zabbix-agent

Открываем файл настроек /etc/zabbix/zabbix_agentd.conf
Server=192.168.0.66   # IP-адрес или DNS-имя Zabbix-сервера
Hostname=HS4         # Имя хоста, которое должно совпадать с именем в
                               # Configuration -> Hosts в Веб-интерфейсе Zabbix

Добавляем в автозапуск и запускаем:
HS4->/etc/zabbix# chkconfig zabbix-agent on

Добавляем правило в iptables
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT


HS4->/etc/zabbix# service zabbix-agent start
Starting ZABBIX agent:                                     [  OK  ]

mc долго запускается?

mc пытается отрезолвить имя хоста, в этом проблема. нужно в /etc/hosts прописать ip и доменное имя хоста
Например: 192.168.21.62 HS6.tb22.ru. HS6


УСТАНАВЛИВАЕМ ВРЕМЕННУЮ ЗОНУ И ВРЕМЯ В LINUX, CENTOS

Допустим нам необходимо поставить временную зону «Europe/Moscow».


Список временных зон, которые существуют в системе можно просмотреть в каталоге «/usr/share/zoneinfo/».

1. Сначала переместим файл временных зон

[root@localhost etc]# mv /etc/localtime /etc/localtime-old

2. Сделаем ссылку на необходимую временную зону

[root@localhost etc]# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

3. Выведем дату

[root@localhost etc]# date

Tue Sep 14 19:41:59 MSD 2010

4. Если время нас не устраивает, то установим новое  - необходимое

[root@localhost etc]# date -s "14 SEP 2010 19:43:00"

Дату так же можно установить с помощью команды

[root@localhost etc]# date +%Y%m%d -s "20100914"

Но время установиться в 0:00:00, поэтому для установки времени, после этого, можно воспользоваться командой

[root@localhost etc]# date +%T -s "19:46:00"

Для проверки и синхронизации системных часов можно воспользоваться командами:

hwclock --show
hwclock --systohc

[root@localhost etc]# hwclock --show

Tue 14 Sep 2010 07:48:31 PM MSD  -0.000441 seconds

Источник

вторник, 9 июля 2013 г.

Устанавливаем EPEL, CentALT, rpmforge Repository on CentOS 6.3 or Redhat 6.3 RHEL

1. Download and import GPG key
wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
2. Download epel software
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
3. Install epel on Centos
rpm -ivh epel-release-6-8.noarch.rpm
CentALT
rpm -ihv http://centos.alt.ru/repository/centos/6/i386/centalt-release-6-1.noarch.rpm
rpmforge
rpm -ihv http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.i686.rpm