php no_exec apache

/etc/php5/apache2/php.ini

disable_functions = dl, shell_exec, posix_mkfifo, exec, system,passthru, symlink, link, set_time_limit, max_execution_time

disable_functions = pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec,pcntl_getpriority, pcntl_setpriority, exec, passthru, shell_exec, system, proc_open, popen

/etc/init.d/apache2 restart

apt through proxy

Доступ через прокси сервер

Если прокси-сервер не был указан при установке системы, то для того, чтобы APT работал с соединением через прокси-сервер, нужно добавить в каталог «/etc/apt/apt.conf.d/» текстовый файл примерно с таким содержанием:

чтобы APT “ходил” через прокси-сервер

Acquire::http::proxy «http://user:password@proxy_IP:proxy_PORT»;
Acquire::ftp::proxy «http://user:password@proxy_IP:proxy_PORT»;
Acquire::::Proxy «true»;
Если сервер без авторизации, то user:password@ следует убрать. Имя файла можно задать произвольное, например, «/etc/apt/apt.conf.d/99proxy». Также можно просто добавить эти же строки в конфигурационный файл «/etc/apt/apt.conf».

NFS

Спасибо http://debian-help.ru/articles/nastroika-nfs-servera-debian/

Установка NFS-сервера.
Небольшое замечание. Если вы используете ядро 2.2.13 и выше, вы можете использовать nfs-kernel-server. Кроме него можно использовать nfs-user-server. Этот пакет более медленный, но имеет больше функций и его легче дебажить, чем nfs-kernel-server.

Установка осуществляется следующей командой:

# aptitude install nfs-kernel-server nfs-common portmap
После установки нужно указать, доступ к каким директориям мы предоставляем. Для этого правим файл /etc/exports. Для NFSv3 и ранее содержимое файла будет выглядеть примерно так:

/mnt/movie 192.168.0.0/24(rw,async,no_subtree_check) /mnt/user 192.168.0.41(rw,async,no_subtree_check)
В NFSv4 предоставляется доступ к главной директории и ее поддиректориям. Таким образом в первой строке описывается главная директория, а в последующих — поддиректории, с отдельной строки:

/mnt 192.168.0.0/24(ro, fsid=0, async, no_subtree_check) /mnt/movie 192.168.0.0/24(rw, async, no_subtree_check) /mnt/user 192.168.0.41(rw, async, no_subtree_check)
В этом примере директория /mnt/movie будет доступна всем в сети 192.168.0.0/24, а /mnt/user — только с компьютера с адресом 192.168.0.41 при этом можно указать несколько конкретных адресов в одной строке разделив блоки описания пробелом.

Пояснения к параметрам в строке:

/mnt/movie — путь к директории, доступ к которой необходимо предоставить.
192.168.1.0/24 — описание сети, из которой можно получить доступ к директории. Также можно указать конкретный адрес, к примеру, 192.168.0.41. Кроме того, NFS понимает шаблоны с применением символов * и ?.
rw — говорит о том, что предоставляются права как на чтение, так и на запись. Если нужно разрешить только читать из директории, то следует указать параметр ro.
async — включает возможность обслуживания клиентов еще до окончания действия предыдущей команды на запись. Это может значительно увеличить быстродействие при большом количестве пользователей, но снижает надежность. По умолчанию, включена опция sync.
no_subtree_check — отключает проверку вложенных директорий.

Прочие опции:

secure — при включении данной опции для соединения будут использоваться порты с номером ниже 1024. Эта опция включена по умолчанию, чтобы её отключить, используйте параметр insecure.
no_wdelay — эта опция не действует при включенной опции async. В нормальном состоянии NFS-сервер немного задерживает запись на диск, если уже ведется запись или ожидается поступление запроса на запись. Это позволяет запустить несколько процессов записи на диск с помощью одной команды, что увеличивает производительность. Однако, если NFS-сервер получает в основном мелкие, не связанные между собой, запросы, то стандартное поведение может снизить производительность, поэтому доступна опция no_wdelay чтобы отключить задержку перед записью.
nohide — в случае когда экспортируются две директории, одна из которых вложенная, при монтировании только родительской директории вложенная будет видна как пустая. Чтобы предотвратить такой эффект, можно использовать данный параметр. Стоит учесть, что данный параметр работает только для экспортирования по конкретному ip-адресу. Обратным параметром является параметр hide.
crossmnt — данный параметр похож на параметр nohide, но дделает возможным для клиентов переходить из файловой системы помеченой параметром crossmnt в экспортированную файловую систему смонтированную в ней. То есть когда вложенная файловая система «B» смонтирована внутри файловой системы «A», установка параметра crossmnt для «A» имеет тот же эффект, как установка параметра nohide для «B».
fsid=num|root|uuid — NFS необходимо идентифицировать каждую файловую систему, которую она экспортирует. Обычно используется UUID. Однако ядра Linux ниже 2.6.20 не понимают UUID, поэтому необходимо устанавливать данный параметр, к примеру fsid=root или fsid=0.

Опции подмены идентификатора пользователя:

nfsd основывает свой доступ к файлами на сервере на gid и uid, предоставляемых в каждом NFS RPC запросе. По привычке пользователь будет ожить что он может получить доступ к своим файлам на сервере, как к обычной файловой системе. Это требует того, чтобы одни и те же gid и uid использовались на клиентской и серверной машинах. Это не всегда верно или не всегда желательно.

Очень часто не желательно, чтобы пользователь root на клиентской машине также воспринимался как root при доступе к файлам на NFS-сервере. Чтобы это предотвратить uid 0 обычно подменяется другим id: так называемым «анонимом» или nobody. Этот тип поведения (называемый «root squashing») применяется по умолчанию и может быть отключен параметром no_root_squash.

По умолчанию, exportfs использует uid/gid с номером 65534 для доступа с подменой. Эти значения могут быть изменеы параметрами anonuid и anongid. Наконец, вы можете подменить все пользовательские запросы на анонимные с помощью параметра all_squash.

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

root_squash — подменяет запросы от uid/gid 0 (root) на анонимыне uid/gid.
no_root_squash — выключает подмену uid/gid для root. Эта опция используется в основном для бездисковых клиентских машин.
all_squash — используется обычно для публичного экспорта директорий. Обратный параметр — no_all_squash.
anonuid и anongid — применяется для указания uid/gid для анонима. Это может быть полезно, если какая либо директория экспортируется для конкретного пользователя, заведенного в системе.

После описания всех директорий, к которым предоставляем доступ, сохраняем файл и перезапускаем NFS-сервер, так как после установки он запускается автоматически:

# /etc/init.d/nfs-kernel-server restart
Полезные утилиты.
Чтобы не передергивать сервис, можно мягко применить измененные настройки командой:

# exportfs -ra
Где параметр -a говорит о том, что нужно экспортировать все директории из файла /etc/exports, а параметр -r заставляет реэкспортировать список всех директорий очистив текущий список. Вообще говоря, если нужно пополнить список экспортированных директорий, то нужно использовать параметр -a, а если нучно убрать все текущие и добавить только те, что есть в /etc/exports, то следует использовать параметр -r. Также может быть полезен параметр -u, который позволяет отменить экспорт определенных директорий и параметр -f, который очищает текущую таблицу экспорта ядра и все активные пользователи при последующем запросе получат новый список экспортируемых директорий.

Узнать различную информацию об экспорте можно с помощью утилиты showmount:

showmount без параметров отображает список подключенных клиентов,
-a или —all — показывает все используемые точки монтирования с ip-адресами и директориями. Так можно узнать, какие машины пользуются NFS-сервером и какие директории на них смонтированы.
-d — отображает только список директорий смонитированных клиентами.
-e — выводит список экспорта NFS-сервера.

Утилита nfsstat отображает диагностическую информацию об активности как NFS-сервера, так и клиента.

Параметры команды nfsstat:

-s — вывести только серверную статистику. По умолчанию выводится как серверная, так и клиентская информация.
-c — вывести только клиентскую статистику.
-n — вывести только статистику NFS. По умолчанию, выводится как NFS, так и RPC статистика.
-2 — вывести данные только по NFS v2. По умолчанию, выводится информация обо всех версиях имеющих не нулевую статистику.
-3 — вывести данные только по NFS v3.
-4 — вывести данные только по NFS v4.
-m — отобразить информацию о всех смонтированных NFS файловых системах. Если указан данный параметр, то все остальные игнорируются.
-r — вывести только статистику NFS.
-l — отобразить информацию в виде списка.

Монтирование на клиентской машине.
При необходимости устанавливаем пару пакетов:

# aptitude install nfs-common portmap
Теперь создаем директории для монтирования, к примеру:

# mkdir -p /home/movie /home/user
Затем просто монтируем в них директории, экспортируемые с NFS-сервера:

# mount -t nfs 192.168.0.2:/mnt/movie /home/movie # mount -t nfs 192.168.0.2:/mnt/user /home/user
Монтирование при использовании NFSv4:

mount -t nfs4 192.168.0.2:/ /home/mnt
То есть при монтировании экспортируемых директорий по NFSv4 необходимо указывать путь на сервере относительно основной директории.

Размонтирование делается как обычно, к примеру:

# umount /home/movie
Настройка автоматического монтирования.
Для того, чтобы на клиентской машине экспортируемые директории монтировались автоматически вносим следующие строки в файл /etc/fstab:

192.168.0.2:/mnt/movie /home/movie nfs rw,async 192.168.0.2:/mnt/user /home/user nfs rw,async
Порядок элементов строки: что, куда, тип файловой системы, параметры.

Бывают следующие параметры:

soft/hard — определяет поведение после превышения количества запросов на подключение. Если ничего не указано или указан параметр hard, то запросы будут отправляться бесконечно. Если задан параметр soft, то после таймаута быдет выдана ошибка. Параметр soft может привести к порче данных, поэтому его следует использовать в случаях когда больше требуется отзывчивость, чем надежность. Увеличение значения параметра retrans может снизить риск порчи данных.
timeo=n — время (в десятках секунд) которое NFS-клиент ждет ответа перед повтором запроса.
retrans=n — сколько раз NFS-клиент повторяет запрос перед тем как перейти к дальнейшим действиям. По умолчанию, запрос повторяется три раза.
rsize=n — максимальное количество байт в каждом сетевом запросе на чтение, которое NFS-клиент может получить когда читает из файла на NFS-сервере. Должно быть кратно 1024. Если параметр не указан, то используется максимальное значение поддерживаемое клиентом и сервером.
wsize=n — максимальное количество байт в каждом сетевом запросе на запись. Условия работы те же, что и для rsize.
ac/noac — определяет будет или нет использоваться кеширование атрибутов файлов. Если ни одна опция не будет установлена (или будет установлена опция ac), то клиент будет кешировать атрибуты файлов.
bg/fg — определяет то, каким образом поведет себя утилита mount если попытка смонтировать nfs-экспорт не удастся. fg (по умолчанию) заставляет mount выйти с ошибкой, а bg заставляет mount в случае таймаута создавать потомка и продолжать попытки смонтировать в то время как родительский процесс будет закрыт.
sharecache/nosharecache — определяет использовать ли один кеш данных в случае если монтируется одна и та же экспортируемая директория в несколько точек монтирования. По умолчанию кеш включен.
intr/nointr — выбирает можно ли применять сигналы на прерывание файловых операций на этой точке монтирования. По умолчанию используется nointr. Использовании опции intr предпочтительно при указании опции soft, так как это сильно снижает вероятность порчи данных. В версиях ядра 2.6.25 и выше данные опции не применяются и при их указании будут проигнорированы.

P.S. Одной из причин, почему я взялся за NFS, было желание смотреть фильмы прямо с домашнего сервера. Вначале запустил samba, что, конечно, удобнее, но при просмотре фильмов раз где-то в 8 минут происходило подвисание, которое отвисало еще минуты через 2. Так жить было не возможно и пришлось запустить NFS-сервер. Однако на домашней машине у меня установлен Windows 7 Pro, в котором нет встроенного NFS-клиента. Поэтому пришлось искать сторонние NFS-клиенты под Windows.

Xen Autostart VM

First approach is to set auto_poweron parameter to true at the pool and VM level.

Setting the XenServer to allow Auto-Start
1. Gather the UUID’s of the pools you wish to auto-start.
To get the list of the pool’s on your XenServer type

xe pool-list

2. Copy the UUID of the pool. If you have just one server, it will still have a pool UUID as bellow:
uuid ( RO) : d170d718-e0de-92fc-b920-f4c59cc62e91
name-label ( RW):
name-description ( RW):
master ( RO): 755d4ea3-373b-44b9-8ae3-3cd6f77a7f33
default-SR ( RW): 51218f44-6ac6-4893-98fb-f924b08f7af9
3. Set the pool or server to allow auto-start:

xe pool-param-set uuid=UUID other-config:auto_poweron=true

Note: *Replacing UUID with the UUID of the XenServer or pool.
Setting the Virtual Machines to Auto-Start
1. Gather the UUID’s of the Virtual Machine you want to auto-start by typing:
xe vm-list
Note: This generates a list of Virtual Machines in your pool or server and their associated UUID’s.

2. Copy the UUID of the Virtual Machines you want to auto-start, and type the following command for each Virtual Machine to auto-start:
xe vm-param-set uuid=UUID other-config:auto_poweron=true
Note: *Replace UUID with the UUID of the Virtual Machine to auto-start.*

For this second part (enabling auto-start for the VMs) we can use a little one-line script, which would enable autostart for ALL vms:

for i in `xe vm-list is-control-domain=false –minimal | tr , ‘ ’`; do xe vm-param-set uuid=$i other-config:auto_poweron=true; done
Edit rc.local file to start all vms with «auto_poweron» in their other-config

Add the following lines at the end of /etc/rc.local file:

[ -e /proc/xen ] || exit 0

XAPI_START_TIMEOUT_SECONDS=240

# wait for xapi to complete initialisation for a max of XAPI_START_TIMEOUT_SECONDS
/opt/xensource/bin/xapi-wait-init-complete ${XAPI_START_TIMEOUT_SECONDS}

if [ $? -eq 0 ]; then

pool=$(xe pool-list params=uuid —minimal 2> /dev/null)

auto_poweron=$(xe pool-param-get uuid=${pool} param-name=other-config param-key=auto_poweron 2> /dev/null)
if [ $? -eq 0 ] && [ «${auto_poweron}» = «true» ]; then
logger «$0 auto_poweron is enabled on the pool— this is an unsupported configuration.»

# if xapi init completed then start vms (best effort, don’t report errors)
xe vm-start other-config:auto_poweron=true power-state=halted —multiple >/dev/null 2>/dev/null || true
fi
fi

Second approach is to use vApp

1. Create vApp
2. Choose vms to vApp
3. Choose boot order and delays between starts
4. To get uuid of vApp use:

xe appliance-list name-label=»name-vapp»
5. Edit rc.local file to start vApp:

echo «sleep 40» >> /etc/rc.local
echo «xe appliance-start uuid=uuid-vapp» >> /etc/rc.local

7. Save file, reboot XenServer

Tkns, http://sysadmin.compxtreme.ro/autostart-vm-in-free-version-of-xenserver-6-x/

Xen 6.5

Проброс PCie:
http://support.citrix.com/article/CTX125574
http://habrahabr.ru/post/137327/
http://habrahabr.ru/post/151661/
http://ursus-mellifera.livejournal.com/6432.html

Делаем xe vm-list и находим uuid нашей виртуалки, у меня uuid=d103a91d-5c38-844f-14d5-64b3c495eb08
Выполняем команду lspci и находим в выводе нашу карту, например 02:00.0 VGA compatible …, 02:00.1 Audio… (двойка удивительным образом соответствует номеру слота, куда воткнута карта).
Записываем однострочный скрипт вида
xe vm-param-set other-config:pci=0/0000:02:00.0,0/0000:02:00.1 uuid=d103a91d-5c38-844f-14d5-64b3c495eb08

В итоге проброс локального видеонаблюдения devline из двух карт:
xe vm-param-set other-config:pci=0/0000:05:00.0,0/0000:06:00.0 uuid=85842063-12b5-ca59-60d7-fe2e7e55980

XenConvert & Xen Center — Windows
http://www.citrix.com/go/products/xenserver/xenserver-additional-resources-free.html

Xo — Xen Orchestra
admin@admin.net — admin

OpenXenManager — Linux
http://sourceforge.net/projects/openxenmanager/
http://www.linuxreaders.com/2010/08/openxenmanager-xencenter-alternative.html

Vt-d Xen
http://xgu.ru/wiki/%C8%F1%EF%EE%EB%FC%E7%EE%E2%E0%ED%E8%E5_VT-d_%E2_Xen

Управление локальными хранилищами:
Вообще все жесткие по умолчанию можно сложить в LVM и из него брать место
http://habrahabr.ru/post/86769/
http://mtaalamu.ru/blog/admining/2429.html

RAID1:
http://discussions.citrix.com/topic/360943-software-raid-mdadm-on-xenserver-65-unexpected-failure/
http://wysotsky.info/?p=106&lang=ru
http://alex-bug.livejournal.com/97570.html
http://sfattic.blogspot.ru/2011/10/xenserver-linuxraid-level-1.html

Скрипт на буржуйском «заменяет нормальный на бразильский бекграунд /usr/share/splash/background.png», но все шуршит Xen 6.5:
xen-6.5.x-mdadm_raid1.sh
Можно сразу забрать: wget http://office.edeg.com.br/reserved/xen/xen-6.5.x-mdadm_raid1.sh

после sh ./xen-6.5.x-mdadm_raid1.sh part1

После перезагружаемся и на загрузку в биосе ставим второй hdd

после sh ./xen-6.5.x-mdadm_raid1.sh part2

Raid5:
http://citrix.pp.ru/articles-2/2105-ustanovka-citrix-xenserver-na-programnyj-raid.html

Plugins — Распаковать в XenCenter:
XS_Console_Plugins_v4

Создадим Local Storage
# xe sr-create content-type=user type=lvm device-config:device=/dev/md2 shared=false name-label=»Local storage»

Обновление системы на RAID1:
http://wysotsky.info/?p=145

Создание локального стораджа через NFS нужно для HA POOL.
https://www.citrix.com/blogs/2009/01/26/how-to-configure-an-nfs-based-iso-sr-using-local-storage-on-a-xenserver5-host/

Vt-d ga-p55-usb3 rev 1.0

ga-p55-usb3 F10c

БИОС для Gigabyte GA-P55USB3 rev 1.0 F10c с поддержкой vt-d = IOMMU для Proxmox 3.10 kernel с подгрузкой PciExpress в виртуалки.

http://ggts.gigabyte.eu/FileList/1017972/55usb3gn.10c
http://www.mediafire.com/?e1bz1mm66zv6pe9

Прошивал через Qflash с fat32.

The VT-d support is optional and require a BIOS modification. The attached special edition of the F10c BIOS will support VT-d. After you have update the BIOS, please do like this to enable VT-d:

1. Under BIOS utility setup/ press “CTRL + F1” to show hidden option.
2. Upon pressing CTRL + F1 , there will be Advanced Chipset Feature option show.
3. Under Advance Chipset Feature, you will see the VT-d option.

Best regards
GIGABYTE-team

Asterisk + Huawei e1550

E155X_Firmware_Update_11.608.14.15.311.B418

Мануал
http://root.uabid.com/asterisk-huawei-e1550-voip-gsm-gate/

NUT и настройка клиентов

NUT и настройка клиентов
Имея один UPS, подключил на его нагрузку три сервера — FreeNAS, FreeBSD и Windows XPSP3. Встала задача организовать их корректное отключение в случае продолжительного отсутствия электропитания, когда заряд батареи снижается ниже некоторого порогового значения в %. Для этого я выбрал FreeNAS в роли ведущего, оповещающего по сети состояние UPS, а в роли клиентов — FreeBSD и Windows. На FreeNAS запущена и настроена UPS служба, которая реализована пакетом NUT (Network UPS Tools) и работает в режиме master с удаленным мониторингом. Разберемся сначала с Windows клиентом NUT…

В интернете нашел всего две программы реализующие функции клиента NUT. Первая из них WinNutClient обладает GUI интерфейсом для отображения текущего состояния UPS, вторая WinNUT такой возможностью не обладает, но может работать в качестве службы. Ее и будем юзать…

Скачав установочный пакет WinNUT распакуем и проинсталлируем его выбрав вариант Full instalation. В главном окне программы отметим флажок Install As Service, чтобы задействовать службу как сервис Windows, и флажок Automatic Startup, чтобы сервис стартовал после загрузки Windows.

Теперь перейдем к настройке, которая заключается в правке файла upsmon.conf. Рассмотрим ключевые моменты.

1) Чтобы реагировать на сигналы, надо определить ведущую систему:

MONITOR ups@enconas 1 root freenas slave

Здесь после @ идет сетевое имя компьютера на котором работает NUT сервер. По умолчанию для связи используется порт 3493, но его можно переопределить, задав явное значение через двоеточие (например enconas:5678). Значение 1 указывает на количество батарей UPS. Далее идут логин и пароль на доступ к серверу.

2) После получения от NUT сервера сигнала FSD, необходимо завершить работу Windows:

SHUTDOWNCMD «shutdown -s»

3) Перед отключением Windows желательно об этом сообщить пользователю:

NOTIFYCMD «c:\\Program Files\\WinNUT\\alertPopup.exe»

Закончив этап настройки можно запустить сервис на исполнение. Для этого жмем кнопку «Apply and Start WinNUT». Состояние строки Status: должно измениться с Not Running на Running as Service, а в логе не должно быть ошибок!

Дополнительно задайте в файле upsmon.conf:
Процент заряда батареи, при котором начнется завершение работы системы FINALDELAY;
Частоту опроса UPS в секундах POLLFREQ и POLLFREQALERT. Общее положение таково, что чем выше частота опроса, тем меньше вероятность пропустить важный сигнал от UPS, но тем выше «зашумление» сети, и наоборот.
Можно эмулировать наступление критического состояния UPS командой # upsmon -c fsd на NUT сервере (выполняющего в режиме master`а).

NUT + APC smartups 2200

Спасибо
http://alexeyantonov.wordpress.com/2011/03/03/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-nut-%D0%B4%D0%BB%D1%8F-apc-smart-ups-1000-sua1000-%D0%B2-debian/
И
http://habrahabr.ru/post/102032/

Имеем: APC Smart-UPS 1000 и несколько компьютеров под Linux. Задача: настроить NUT для работы с ИБП, подключаемым по USB.

Устанавливаем NUT: aptitude install nut
В /etc/nut/ups.conf создаем описание нашего ИБП:
[apc]
driver = usbhid-ups
port = auto
desc = «UPS host»
Пробуем запустить upsdrvctl:
sudo upsdrvctl start
Должно появиться что-то вроде
Network UPS Tools — UPS driver controller 2.2.2
Network UPS Tools: 0.29 USB communication driver — core 0.33 (2.2.2)
Using subdriver: APC HID 0.92Если получаем ошибку could not detach kernel driver from interface 0, то делаем:
sudo udevadm control —reload-rules
sudo udevadm trigger
После чего снова делаем sudo upsdrvctl start
Теперь настраиваем /etc/nut/upsd.conf:
LISTEN IP_ADDRESS 3493
MAXCONN 4
Правим файл с пользователями /etc/nut/upsd.users (для нескольких пользователей — несколько записей. Не забываем про allowfrom):
[USER_NAME]
password = PASSWORD
allowfrom = localhost
upsmon master
И настраиваем /etc/nut/upsmon.conf:
MONITOR apc@IP_ADDRESS 1 USER_NAME PASSWORD master
Перезапускаем все:
sudo /etc/init.d/nut restart

——————————————————————————
Настройка ИБП Ippon Backpower Pro для автоматического выключения и включения
Linux*
Купить ИБП для домашнего сервера я собирался давно, но постоянно душила жаба. То есть, особой необходимости в нём не было, просто как-то не по-людски без бесперебойника. В конце-концов, купил дешёвый Ippon Backpower Pro 500 и уселся настраивать. Погуглив пару минут, решил, что официальные драйвера, написанные на java лохматого года выпуска, мне не нравятся и взялся прикручивать NUT.

Настроил. Заработало. Одно «но» — вражеский девайс упорно не желал выключать питание с нагрузки.

То есть, схема задумывалась следующая:
Пропадает питание — работаем от батареи, сколько можем;
При разряде батареи подаём ИБП команду выключиться через пару минут и завершаем работу;
ИБП отключает серверу питание и уходит в ждущий режим;
При появлении электричества в сети ИБП выходит из ждущего режима и подаёт питание на сервер;
Сервер заводится, ибо в биосе выставлена соответствующая опция.

Сам ИБП вхолостую будет работать долго, прежде чем на нём сработает защита от переразряда. Понятное дело, что в такой ситуации сервер будет думать, что питание никуда не пропадало и обратно автоматически не включится.

Плюнув, я решил всё-так установить официальные драйвера. Однако и здесь меня ждал облом. Официальный драйвер определял тип ИБП как «regular LINE-INT UPS», для таких устройств выключение ИБП по команде не поддерживалось. Поддерживались лишь какие-то другие, видимо, более навороченные (и дорогие) модели. Приуныв, я удалил неудобный официальный драйвер и поставил NUT обратно, взявшись с безнадёги копаться в исходниках драйвера.

Немножко покурив код драйвера и спеки протокола Megatec, по которому осуществлялось общение с иппонцем, я обнаружил, что выключение по таймеру в девайсе всё же реализовано, хоть и криво. В спеках команда для выключения и последующего включения ИБП выглядит так:

S n R m cr

n — время до выключения ИБП с момента подачи команды.
m — время до включения ИБП с момента подачи команды. Если m минут уже истекло, а питание для ИБП всё ещё не подаётся, ИБП ждёт появления напряжение в сети и тогда включается.
Для n диапазон значений может быть либо {.1 — .9} (десятые доли минуты), либо {01-10} (целые минуты).
Для m диапазон значений — {0001-9999} (целые минуты).

Всё в минутах, заметьте. Мой конкретный экземпляр Ippon Backpower Pro 500 воспринимает первое значение как часы. Брак ли это, или так задумано, чтоб враги не догадались — не знаю. Таким образом, минимальный интервал времени, который я могу указать для выключения ИБП, составляет 6 минут вместо 6-ти секунд. Не зная этой особенности, я вводил значения для выключения около 2-3 минут, а иппонец преданно намеревался ждать 2-3 часа перед тем, как уйти в ждущий режим.

Далее приведу мои конфиги для настройки выключения ИБП через минимальное время (6 минут) после разряда батареи. NUT позволяет следить за целыми сетями бесперебойников, но у меня конфиг простенький:

/etc/nut/nut.conf

MODE=standalone

/etc/nut/ups.conf

[ippon]
driver = blazer_usb
port = auto
desc = «Ippon IBP»
default.battery.voltage.high = 13.60
default.battery.voltage.low = 10.60
offdelay = 6
ondelay = 7

Значения default.battery.voltage.high и default.battery.voltage.low служат для вычисления примерного заряда батареи в процентах. Также при снижении напряжения до уровня default.battery.voltage.low запускается скрипт выключения системы. На других ИБП значения могут отличаться. Можете их сначала не указывать, а добавить после замера напряжения при полном заряде ИБП и незадолго до его разряда. Значения можно получить командой upsc <имя_ибп>. Имя указано в начале секции в квадратных скобках (у меня ippon).

/etc/nut/upsd.conf — у меня этот файл пуст, все настройки по умолчанию.

/etc/upsd.users

[admin]
password = mypass
upsmon master
actions = SET
instcmds = ALL

В этом файле устанавливаются права для различных пользователей. У меня только один пользователь с полными правами.

/etc/nut/upsmon.conf

RUN_AS_USER nut
MONITOR ippon@localhost 1 admin mypass master
MINSUPPLIES 1
SHUTDOWNCMD «/sbin/shutdown -Ph +0»
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

Здесь настраиваются параметры слежения за ИБП и завершения работы. В этом файле нужно обратить внимание на значения MONITOR (где указано, за какими ИБП будет следить демон) и SHUTDOWNCMD (команда для завершения работы).

Поскольку в конфигах содержатся пароли для управления ИБП, права на их чтение следует выделить только руту и группе nut.

http://www.ignix.ru/book/freebsd/daemon/network_ups_tools — Очень разжеванно

Управление температурой Cpu

Делал по аналогии нижеописанной статьи для своего Proxmox сервера.

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

Шум хоть и стал меньше, меня он всё равно не устроил. Компьютер и, соответственно, корпус у меня 2006 года, поэтому что-либо совсем уж тихое найти было сложновато. Опытным путём было выяснено, что больше всего шума даёт корпусной вентилятор (для этого достаточно на секунду остановить все вентиляторы поочерёдно пальцем или другим подходящим предметом). Поскольку на вентиляторе имелся не только стандартный 3-контактный разъём, но и разъём Molex, нашлось простое решение — перекинуть контакты, так чтобы снизилось питающее вентилятор напряжение. Подробнее это можно увидеть в разделе «Подключение вентиляторов» из статьи «Конструируем систему охлаждения компьютера». Жёлтый провод я всё-же воткнул в 3-контактный разъём на положенное место, дабы следить за скоростью вращения вентилятора, о чем будет написано чуть ниже.

Вторым кандидатом на настройку стал вентилятор процессора. В BIOS я узнал, что моя материнская плата поддерживает функцию PWM — управление скоростью вращения вентилятора в зависимости от показаний температурного датчика. Простейшее трёхскоростное управление я настроил прямо из BIOS, и если оно вас устроит, то нужды настраивать fancontrol в принципе нет. Меня эти три режима не устроили, захотелось более плавного разгона вентилятора по мере нагревания процессора.

Поскольку я пользуюсь Linux (Debian 6), то и настраивать управление будем в нём.

Первым делом, установим пакет для слежения за сенсорами и запустим обнаружение сенсоров:
# apt-get install lm-sensors
# sensors-detect
Отвечаем на все вопросы буквой y. Это важно, т.к. на один из вопросов ответ по умолчанию — n. Без этого пункта у меня не находились сенсоры материнской платы.
Now follows a summary of the probes I have just done.
Just press ENTER to continue:

Driver `it87′:
* ISA bus, address 0x290
Chip `ITE IT8712F Super IO Sensors’ (confidence: 9)

Driver `k8temp’ (autoloaded):
* Chip `AMD K8 thermal sensors’ (confidence: 9)

To load everything that is needed, add this to /etc/modules:
#—-cut here—-
# Chip drivers
it87
#—-cut here—-
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!
Теперь можно заглянуть в /etc/modules и проверить, появились ли там новые модули, добавленные sensors-detect.

Чтобы не перезагружать систему, загрузим эти модули вручную. У меня был добавлен модуль it87, поэтому я подгружаю его:
# modprobe it87
Теперь можно посмотреть информацию, предоставляемую сенсорами:
$ sensors

k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp: +32.0°C

it8712-isa-0290
Adapter: ISA adapter
in0: +1.07 V (min = +0.00 V, max = +4.08 V)
in1: +2.58 V (min = +0.00 V, max = +4.08 V)
in2: +3.33 V (min = +0.00 V, max = +4.08 V)
in3: +2.21 V (min = +0.00 V, max = +4.08 V)
in4: +3.02 V (min = +0.00 V, max = +4.08 V)
in5: +1.76 V (min = +0.00 V, max = +4.08 V)
in6: +2.00 V (min = +0.00 V, max = +4.08 V)
in7: +2.35 V (min = +0.00 V, max = +4.08 V)
Vbat: +4.08 V
fan1: 0 RPM (min = 0 RPM, div = 8)
fan3: 1670 RPM (min = 0 RPM, div = 8)
temp1: +25.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp2: +29.0°C (low = +127.0°C, high = +60.0°C) sensor = thermistor
temp3: +70.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
cpu0_vid: +1.100 V
У меня есть сенсоры температуры на процессоре и на материнской плате (не знаю, в каких именно местах).

Теперь установим пакет для управления скоростью вращения вентиляторов.
# apt-get install fancontrol
И запустим программу для автоматизированной настройки fancontrol:
# pwmconfig
Программа сразу после запуска сообщает информацию об обнаруженных ею сенсорах температуры, устройствах управления вентиляторами и сенсорах скорости вращения вентиляторов:
Found the following devices:
hwmon0/device is k8temp
hwmon1/device is it8712

Found the following PWM controls:
hwmon1/device/pwm1
hwmon1/device/pwm2
hwmon1/device/pwm3

Giving the fans some time to reach full speed…
Found the following fan sensors:
hwmon1/device/fan1_input current speed: 2556 RPM
hwmon1/device/fan3_input current speed: 1654 RPM
Лучше всего сразу куда-нибудь скопировать эту информацию, чтобы понимать, что за устройства программа имеет в виду, когда спрашивает вас о чём-то. Например, для меня было важно, что hwmon0/device — это процессор, а hwmon1/device — это материнская плата.

Дальше программа по очереди пытается остановить каждый из вентиляторов и пытается по сенсорам вращения вентиляторов установить соответствие между устройством управления скоростью вращения вентилятора и связанным с ним сенсором.

У меня было обнаружено только одно соответствие:
Testing pwm control hwmon1/device/pwm1 …
hwmon1/device/fan1_input … speed was 2556 now 0
It appears that fan hwmon1/device/fan1_input
is controlled by pwm hwmon1/device/pwm1
После этого программа предложила составить таблицу соответствия между значениями управляющего байта (от 0 до 255) и скоростью вращения вентилятора:
Would you like to generate a detailed correlation (y)?
Я ответил утвердительно.
PWM 255 FAN 2596
PWM 240 FAN 2596
PWM 225 FAN 2556
PWM 210 FAN 2556
PWM 195 FAN 2556
PWM 180 FAN 2556
PWM 165 FAN 2596
PWM 150 FAN 2556
PWM 135 FAN 2556
PWM 120 FAN 2596
PWM 105 FAN 2596
PWM 90 FAN 2596
PWM 75 FAN 2556
PWM 60 FAN 2556
PWM 45 FAN 2445
PWM 30 FAN 2280
PWM 28 FAN 2250
PWM 26 FAN 2191
PWM 24 FAN 2163
PWM 22 FAN 2109
PWM 20 FAN 2057
PWM 18 FAN 1985
PWM 16 FAN 1917
PWM 14 FAN 1834
PWM 12 FAN 1721
PWM 10 FAN 1622
PWM 8 FAN 1493
PWM 6 FAN 1339
PWM 4 FAN 1171
PWM 2 FAN 964
PWM 0 FAN 0
Fan Stopped at PWM = 0
Программа не обнаружила, каким из вентиляторов управляло устройство hwmon1/device/pwm2 и спросила меня, слышал или видел ли я, что какой-то из вентиляторов во время теста останавливался.
Did you see/hear a fan stopping during the above test (n)?
Я этого не видел и не заметил уменьшения шума, поэтому ответил n.

То же самое произошло и с устройством hwmon1/device/pwm3. Я также ответил n.

Затем программа говорит о том, что программа fancontrol может следить за температурой устройств, управляя скоростью вращения вентиляторов. pwmconfig предлагает мне настроить fancontrol. Я соглашаюсь.
The fancontrol script can automatically respond to temperature changes
of your system by changing fanspeeds.
Do you want to set up its configuration file now (y)?
Задаёт вопрос о том, где должен находиться файл конфигурации fancontrol. Можно нажать enter и тем самым согласиться на предложенный файл, а можно ввести другое имя файла.
What should be the path to your fancontrol config file (/etc/fancontrol)?
Дальше программа предлагает настроить устройство управления только одним из вентиляторов, для которого установлено соответствие канала управления и сенсора скорости вращения.
Select fan output to configure, or other action:
1) hwmon1/device/pwm1 3) Just quit 5) Show configuration
2) Change INTERVAL 4) Save and quit
Пункт 2 позволяет настроить периодичность проверки температуры и коррекции скорости вращения.

Пункт 3 позволяет просто выйти.

Пункт 4 — сохранить настройки и выйти.

Пункт 5 — показать конфигурацию.

Выбираем пункт 1, чтобы указать, какой из сенсоров температуры следует использовать для управления вентилятором. У меня таких сенсоров 4, я выбираю первый из них, который соответствует сенсору температуры на процессоре.
Select a temperature sensor as source for hwmon1/device/pwm1:
1) hwmon0/device/temp1_input
2) hwmon1/device/temp1_input
3) hwmon1/device/temp2_input
4) hwmon1/device/temp3_input
5) None (Do not affect this PWM output)
select (1-n):
Остальные сенсоры — это сенсоры температуры на материнской плате. Их положение мне неизвестно, да и управлять больше у меня нечем, кроме как скоростью вращения вентилятора на процессоре. Есть ещё корпусной вентилятор, но он, судя по тестам pwmconfig, фактически не управляется.

Дальше нужно ответить на несколько простых вопросов. Нам понадобится составленная выше таблица зависимости скорости вращения вентилятора от значения управляющего сигнала и немного здравого смысла. Судя по таблице, вентилятор работает на максимальной скорости уже при значении сигнала управления 105. Останавливается он при значении 2, а запускается при значении 4 (это я смог узнать только пробуя разные значения этого параметра в конфигурации fancontrol).

Как я выбирал предельные температуры? Очень просто — температура воздуха дома сейчас около 30 градусов Цельсия (на системнике висит магнит с термометром). Не вижу смысла насиловать кулер, заставляя его охлаждать процессор простым обдувом комнатным воздухом до 30 градусов или ниже — это просто невозможно. Накидываю 5 градусов и считаю такую температуру процессора нормальной. Пока температруа процессора ниже 35 градусов, включать охлаждение особого смысла нет. Включать его на полную мощность следует только при той температуре, при которой BIOS начнёт предупреждать о перегреве звуковым сигналом. У меня это 60 градусов Цельсия. Пока не достигнута эта температура, разгоняем вентилятор плавно, не в полную силу.

Enter the low temperature (degree C)
below which the fan should spin at minimum speed (20): 35
Указать самую высокую температуру, выше которой вентилятор должен включаться на полную мощность.
Enter the high temperature (degree C)
over which the fan should spin at maximum speed (60): 60
Минимальное значение канала управления, при котором вентилятор останавливается.
Enter the minimum PWM value (0-255)
at which the fan STOPS spinning (press t to test) (100): 2
Минимальное значение канала управления, при котором вентилятор начинает вращаться.
Enter the minimum PWM value (4-255)
at which the fan STARTS spinning (press t to test) (150): 4
Значение канала управления, если температура ниже минимальной.
Enter the PWM value (0-4) to use when the temperature
is below the low temperature limit (0): 0
Значение канала управления, если температура выше максимальной.
Enter the PWM value (4-255) to use when the temperature
is over the high temperature limit (255): 105
Теперь можно посмотреть конфигурацию (пункт 5) или сохранить изменения и закончить настройку (пункт 4). Можно снова ответить на вопросы, выбрав канал управления из списка.

Все эти настройки вносятся в файл /etc/fancontrol, где их можно отредактировать вручную:
# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=5
DEVPATH=hwmon0=devices/pci0000:00/0000:00:18.3 hwmon1=devices/platform/it87.656
DEVNAME=hwmon0=k8temp hwmon1=it8712
FCTEMPS= hwmon1/device/pwm1=hwmon0/device/temp1_input
FCFANS= hwmon1/device/pwm1=hwmon1/device/fan1_input
MINTEMP= hwmon1/device/pwm1=35
MAXTEMP= hwmon1/device/pwm1=60
MINSTART= hwmon1/device/pwm1=4
MINSTOP= hwmon1/device/pwm1=2
MAXPWM=hwmon1/device/pwm1=105
Осталось только запустить службу fancontrol и вентиляторы будут управляться автоматически:
# /etc/init.d/fancontrol start
Самое главное, что нужно от pwmconfig — это установить соответствие между сенсорами скорости вращения вентилятора, температуры и каналом управления скоростью вращения вентилятора. Остальное можно настраивать уже простым редактированием файла /etc/fancontrol с последующим перезапуском демона fancontrol. Следить за индикаторами можно с помощью команд watch sensors. Именно таким образом я настроил подходящие параметры fancontrol.

С такими настройками я могу редактировать тексты при полностью остановленном вентиляторе. При полной загрузке процессора температура его поднимается до 45 градусов и держится на этом уровне стараниями fancontrol.

спасибо http://vladimir-stupin.blogspot.ru/2011/11/fancontrol.html