Bacula удаление старых томов

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

UPDATED: Автоматизация процесса.

Запускаем консоль

# bconsole

Переходим в режим SQL запросов к каталогу
Continue reading Bacula удаление старых томов

RouterBoard RB750 + OpenWRT

Для сборки Open-Wrt и прошивки в Mikrotik RouterBoard 750 потребуется:

  • Linux box;
  • прямой кабель ethernet (патчкорд).
Примечание: у меня Mikrotik отказывался загружаться через кросоверный (перекрещенный) кабель соединяющий его с интерфейсом компьютера Mikrotik< ->Компьютер.

Установить необходимые пакеты для сборки образа Open-WRT (список возможно не полный и вам потребуется что-то ещё)
Команда выполняется с привилегиями root

# yum install gcc gcc-c++ ncurses-devel zlib-devel flex git -y

Continue reading RouterBoard RB750 + OpenWRT

Простой скрипт автоматического рестарта http сервера

Если по непонятным причинам web сервер повисает, а времени на разбирательства нет, то неплохим вре́менным решением будет автоматический перезапуск web сервера. Такая ситуация сложилась с одним проектом у знакомого, администратор которого накануне уехал в отпуск. Вот скрипт который отлично справился с задачей.
Continue reading Простой скрипт автоматического рестарта http сервера

bash, парсинг имени файла и пути к нему

bash имеет встроенные функции манипуляции со строками. В частности функции удаления подстрок.

${string#substring} — удаляет кратчайшее вхождение подстроки $substring от начала строки $string.

${string##substring} — удаляет длиннейшее вхождение подстроки $substring от начала строки $string.

Аналогичным образом действует оператор % но действует от конца строки.

${string%substring} — удаляет кратчайшее вхождение подстроки $substring в конце строки $string.

${string%%substring} — удаляет длиннейшее вхождение подстроки $substring в конце строки $string.

При помощи этих функций можно получить имя файла, путь к файлу и его расширение:

# переменная для работы содержащая полное имя и путь к файлу
fullpathname="/root/temp/file.tar.gz"

# Получить путь (часть от начала строки до последнего слева слеша)
$ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%/*}"
/root/temp

# Получить имя файла (часть от самого правого слеша до конца строки)
$ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname##*/}"
file.tar.gz

# Получить строку левее самой левой точки
# !!! Если точка будет находиться в пути, то отрежет по ней
$ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%%.*}"
/root/temp/file

# Получить путь и имя файла без расширения (удаляет все правее самой правой точки)
$ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%.*}"
/root/temp/file.tar

# Получить расширение (правая часть от последней слева точки в имени файла)
$ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname##*.}"
gz

# Все расширения (правая часть от первой слева точки в имени файла)
$ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname#*.}"
tar.gz

# Удаление любого расширения
$ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%.*}"
/root/temp/file.tar

# Удаление расширения .gz
$ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%.gz}"
/root/temp/file.tar

# Замена расширения .gz на .doc
$ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%.gz}.doc"
/root/temp/file.tar.doc

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

fullpathname="/root/temp/file.tar.gz"
              |--------------------|   - fullname
              ^--------^               - path
                         ^---------^   - name
                                  ^^   - extension
             #>>                       - от начала короткое удаление
            ##>>>>                     - от начала длинное удаление
                                  <<%  - от конца короткое удаление
                                <<<<%% - от конца длинное удаление

По материалам Advanced Bash-Scripting Guide

apache не выполняет php скрипт, а отображает его содержимое.

<?php
phpinfo();
?>

Современные версии php по умолчанию не обрабатывают короткий тэг. То есть, надо писать не

<?
phpinfo();
?>

но

<?php
phpinfo();
?>

Настройка находится здесь:
/etc/php.ini

short_open_tag = Off

Нужно включить On посде этого будет обрабатываться короткий открывающий тэг.

pure-ftpd не создаёт домашний каталог виртуального пользователя

pure-ftpd
Как описано в документации опция CreateHomeDir разрешает автоматически при первом входе на ftp создавать домашние каталоги для виртуальных пользователей pure-ftp при каждом входе (если каталог не существует).

После установки в конфиге /etc/pure-ftpd/pure-ftpd.conf опций

VerboseLog yes
CreateHomeDir yes

я ожидал что домашние каталоги пользователей будут создаваться. Однако они не создавались ни при добавлении виртуального пользователя ни при логине пользователя. А в логе /var/log/messages появляются такие вот скупые записи:

May 28 18:12:09 b01 pure-ftpd: (?@127.0.0.1) [INFO] New connection from 127.0.0.1
May 28 18:12:09 b01 pure-ftpd: (?@127.0.0.1) [ERROR] Home directory not available - aborting

Continue reading pure-ftpd не создаёт домашний каталог виртуального пользователя

zabbix_get — не выдаёт данных

Бывает вот так:

[root@v03-a ~]# zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"


[root@v03-a ~]#

Попробуйте воспользоваться telnet – получите больше информации.

[root@v03-a ~]# telnet localhost 10050
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

Оказывается что zabbix_get выводит пустую строку если zabbix-agent на целевом хосте не принимает соединение.
Проверяйте доступность портов в iptables
а также строку настройки в /etc/zabbix/zabbix_agentd.conf

Server=192.54.18.210,192.54.18.211,192.54.18.213

Удаление vg и lv после физического отключения диска

Случилось так, что я глянул в mount и не увидел примонтированных LV со внешнего диска и спокойно выдернул usb коннектор того самого диска. И только через пару дней обнаружил, что команды lvs и vgs проходят с ошибками. Это были активные vg о которых я забыл перед физическим отключением диска. Так как тома́ с данными были предварительно размонтированы то сами данные на отключённом диске были в порядке. Меня раздражало несколько этих сообщений об ошибке. Нужно было их убрать. И конечно без перезагрузки сервера.

[root@csa01 etc]# vgs
  /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 2000393535488: Input/output error
  /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 2000393592832: Input/output error
  /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 0: Input/output error
  /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 4096: Input/output error
  VG          #PV #LV #SN Attr   VSize   VFree  
  VG_CSA01_DATA   1   3   0 wz--n-   7.28t   4.79t
  VG_CSA01x       1   5   0 wz--n- 465.54g 421.68g

Continue reading Удаление vg и lv после физического отключения диска

zabbix-server ошибки в логе сервера

На машине с zabbix-server в логе обнаружилось много ошибок:
/var/log/zabbix/zabbix_server.log

1735:20130402:101321.073 Sending list of <span style="text-decoration: underline;">active checks</span> to [<strong>10.8.12.57</strong>] failed: host [v03-b] not found
1732:20130402:101324.512 Sending list of <span style="text-decoration: underline;">active checks</span> to [<strong>10.8.12.6</strong>] failed: host [ns1] not found
1737:20130402:101325.918 Sending list of <span style="text-decoration: underline;">active checks</span> to [<strong>10.8.12.56</strong>] failed: host [v03-a] not found
1738:20130402:101354.219 Sending list of <span style="text-decoration: underline;">active checks</span> to [<strong>10.8.12.220</strong>] failed: host [mgmt01] not found

РЕШЕНИЕ
Входить на каждый клиент по IP из лога сервера и добавлять в конфигурацию zabbix-agentd опцию отключеня активной проверки и рестартовать демона.

ssh root@10.8.12.57
echo DisableActive=1 >> /etc/zabbix/zabbix-agentd.conf
service zabbix-agent restart