Как корректно завершить работу СХД Promise VTRAK M500i при отключении электричества?
На работе была поставлена следующая задача: при отключении электричества все серверы должны корректно завершить свою работу и отключиться. И я уже писал подобную заметку, где рассматривал выключение сервера ESXi. Ознакомиться можно тут:
Недавно потребовалось сделать такую же работу в другой серверной. А там к одному из серверов подключена СХД Promise VTRAK M500i. Это довольно старая модель СХД, которая сама не умеет мониторить ИБП. Значит выключать её придётся по такому же принципу, как и сервер ESXi в прошлой заметке. Разница лишь в том, что подключаться к СХД придётся по Telnet. Поэтому, первым шагом, надо включить доступ по Telnet на самой СХД. Захожу в Administrative Tools → Software Management → Telnet:
И там запускаю сервис Telnet:
После этого пробую подключиться со своего компа:
telnet 10.100.100.7 2300
где 2300 — это порт. Система попросит ввести логин и пароль от Promise. Так это всё выглядит в консоли:
[adm@fed ~]$ telnet 10.100.100.7 2300
Trying 10.100.100.7...
Connected to 10.100.100.7.
Escape character is '^]'.
-------------------------------------------------------------
Promise VTrak Command Line Interface (CLI) Utility
Version: 2.02.0000.00 Build Date: Jun 21, 2006
Copyright 2006, Promise Technology, Inc. All rights reserved.
-------------------------------------------------------------
Login: administrator
Password: *************
-------------------------------------------------------------
Type help or ? to display all the available commands
Type menu to enter Menu Driven Configuration Utility
-------------------------------------------------------------
administrator@cli>
Теперь, чтобы завершить работу СХД, надо выполнить команду:
shutdown -a shutdown
Система начнёт завершать работу. В документации написано, что ей на это понадобится не менее 2-ух минут. Это надо иметь ввиду. У меня выключение заняло примерно 5 минут.
Теперь встаёт вопрос, как организовать выключение автоматически при низком заряде ИБП. Как и в прошлый раз, для этого понадобится какой-нибудь линуксовый сервер, который будет выключаться параллельно с СХД. Но консольная программка Plink не поможет в этот раз. Ибо есть вот такая проблема:
plink -telnet 10.100.100.7 -P 2300 -l administrator -pw 'mypassword'
plink: the -pw option can only be used with the SSH protocol
Нельзя подключаться к телнету, используя пароль в качестве опции подключения.
На помощь приходит Bash-скрипт, который я взял с этого ресурса:
https://admin-gu.ru/coding/bash/bash-skript-dlya-avtomaticheskogo-telnet-soedineniya-i-vvoda-komand
И немного причесал под себя:
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
#Входные данные:
USER="administrator"
PASSWD="mypassword"
LOG="telnet_shutdown.log"
HOSTS="
10.100.100.7
"
for H in $HOSTS
do
echo START SCRIPT: >> $LOG
date +%x-%R >> $LOG
(
sleep 1;
echo -en "$USER\r";
sleep 1;
echo -en "$PASSWD\r";
sleep 1;
echo -en "shutdown -a shutdown\r";
sleep 1;
) | telnet $H 2300 >> $LOG
echo =================================== >> $LOG
done
exit
Обзову этот скрипт, например, telnet_shutdown.sh и положу его в каталог /etc/apcupsd на линуксовом сервере, на котором установлена и настроена программа Apcupsd. Не забываю сделать этот файл исполняемым:
chmod +x telnet_shutdown.sh
Также не забываю установить Telnet, если его нет:
apt-get install telnet
Теперь надо отредактировать файл /etc/apcupsd/apccontrol. В нём надо найти секцию doshutdown и добавить одну строчку. Это должно выглядеть так (выделил зелёным добавленное):
doshutdown)
echo "UPS ${2} initiated Shutdown Sequence" | ${WALL}
# сначала завершить работу СХД Promise
/etc/apcupsd/telnet_shutdown.sh
/bin/sleep 5
${SHUTDOWN} -h now "apcupsd UPS ${2} initiated shutdown"
;;
Всё. Теперь линуксовый сервер, увидев, что заряд батареи в ИБП низкий, сначала подключится по Telnet к СХД Promise VTRAK M500i и отправит ему команду завершения работы, затем уже сам завершит работу.
Донаты принимаются на кошельки:
Yoomoney:
4100118091867315
Карта Т-Банк (бывший Тиньков):
2200 7017 2612 2077
Карта Альфа-Банк:
2200 1539 1357 2013