Надо легко и просто из консоли менять пароли для клиентов.
Дано два скрипта:
chpass.sh - лежит на основном сервере, NOC
rchpass.sh лежит на каждом хостинговом сервере в /sbin/
Первый скрипт принимает в качестве параметра домен, логинится по этому домену на хостинговый сервер, сначала смотрит какому логину нужно менять пароль и переспрашивает все ли верно. Скрипту нужно ответить yes, иначе выполнение прервется.
Если подтверждение получено, то удаленный скрипт с помощью стандартных сипанельных скриптов меняет пароль (так как это делает сама сипанель через WHM) и возвращает текст который можно сразу copy/paste'ить в письмо.
Рекомендую прочесть комментарии, там описано как это все происходит. Теоретически можно использовать непосредственно rchpass.sh чтобы менять пароль из консоли прямо на сервере, если у вас он только один.
Требования к скрипту:
1. На NOC должен стоять pwgen
2. Юзер под которым мы логинимся на хостинговый сервер должен иметь беспарольное sudo на некоторые сипанельные скрипты
Первый, основной скрипт
#!/bin/bash
####################################################################
# #
# chpass.sh v1.2 (CSX, 1 September 2008) #
# #
# http://support24x7.blogspot.com/ #
# #
# Главная часть скрипта для смены пароля на хостинговых серверах. #
# Вторая часть должна лежать на хостинговых серверах #
# /sbin/rchpass.sh. #
# #
# Скрипт в качестве опции принимает имя домена, логинится туда, #
# куда резолвится домен с NOC'а, и запускает там удаленный скрипт, #
# который меняет все пароли и возвращает текст для письма клиенту. #
# #
# Для изменения пароля используются стандартные скрипты cPanel. #
# #
####################################################################
# Если нет опций
if [ -z "$1" ]
then
echo "Use: chpass.sh <domain>"
exit 0
fi
# Если опций более одной
if [ "$2" ]
then
echo "Only one argument is allowed"
exit 0
fi
domain=$1
# Изменяя первый параметр мы можем изменять длину пароля
pass=`pwgen 8 1`
echo "Domain: $domain"
# Запускаем удаленный скрипт /home/tech/bin/cdpass.sh с параметром test в качестве второй опции,
# так он отдаст нам имя пользователя и спросит разрешения на смену пароля.
# Такой скрипт должен лежать на всех хостинговых серверах.
echo "/home/tech/bin/cdpass.sh $domain test"|ssh $domain 2> /dev/null || `echo "Can't connect to host"; exit 0`
echo ''
echo -n "Change password [yes/NO]: "
read resp
echo ""
if [ "$resp" != "yes" ]
then
echo 'OK. Stoped'
exit 0
fi
# Если разрешение на смену пароля получено то запускаем удаленный скрипт и меняем пароль.
echo "/sbin/rchpass.sh $domain $pass"|ssh $domain 2> /dev/null || `echo "Can't connect to host"; exit 0`
# Пишем в лог дату и сообщение о том для какого домена был сменен пароль и на какой.
# Разумеется, это очень несекьюрно, поэтому по-умолчанию закомментировано
# ---- logging ----
# logdate=`date "+[%d/%m/%y %T] "`
# echo -n "$logdate" >> /var/log/chpass.log
# echo -n "Password for domain $domain changed to $pass" >> /var/log/chpass.log
# echo '' >> /var/log/chpass.log
# ---- logging ----
# Если видно это сообщение, значит все прошло хорошо.
echo "Done"
Второй скрипт, который собственно делает всю работу
#!/bin/bash
####################################################################
# #
# rchpass.sh v1.2 (CSX, 1 September 2008) #
# #
# http://support24x7.blogspot.com/ #
# #
# Вторая часть скрипта для смены пароля на хостинговых серверах. #
# Первая часть должни лежать на NOC сервере #
# #
# Скрипт в качестве первой опции принимает имя домена, в качестве #
# второй опции пароль или слово test. Если вторая опция не test, #
# то скрипт меняет пароль для хостинг-аккаунта владельца домена и #
# возвращает текст для письма клиенту. Если вторая опция test, то #
# возвращает логин владельца домена и завершается. #
# #
# Для изменения пароля используются стандартные скрипты cPanel. #
# #
####################################################################
# Если не две опции
if [ -z "$1" ] || [ -z "$2" ]
then
echo "empty"
exit 0
fi
# Если вторая опция test выводим логин владельца домена и завершаем работу
if [ "$2" = "test" ]
then
ddomain=$1
usrname=`sudo /scripts/whoowns $ddomain`
echo -n "Username: "
echo $usrname
exit 0
fi
ddomain=$1
ppass=$2
usrname=`sudo /scripts/whoowns $ddomain`
echo -n "Username:"
echo $usrname
# Этот сипанельный скрипт меняет UNIX пароль
sudo /scripts/chpass $usrname $ppass
# Этот скрипт меняет пароль для базы данных у cPanel'ного логина
# (используется, например, для доступа в phpMyAdmin)
sudo /scripts/mysqlpasswd $usrname $ppass && echo "Пароль для MySQL изменен"
# Этот скрипт синхронизирует UNIX пароль с паролями в настройках FTP сервера
sudo /usr/local/cpanel/bin/ftpupdate $usrname
echo ""
echo "---------------------------------------------------------------------------------"
echo "Здравствуйте!"
echo ""
echo "Пароль для Вашего сайта изменен!"
echo ""
echo "Новые данные:"
echo ""
echo "cPanel "
echo "Ссылка: https://$ddomain:2083"
echo "Логин: $usrname"
echo "Пароль: $ppass"
echo ""
echo "FTP"
echo "Ссылка: ftp://$ddomain"
echo "Логин: $usrname"
echo "Пароль: $ppass"
echo ""
echo "Любые другие настройки Вы можете изменить самостоятельно через cPanel."
echo "Пожалуйста, обратите внимание, что для доступа к cPanel у Вас должен быть открыт порт 2083 в файерволле. Для доступа к FTP порт 21."
echo ""
echo "Спасибо."
echo "---------------------------------------------------------------------------------"
Буду рад сообщениям обо всех замеченных ошибках.
Комментариев нет:
Отправить комментарий