четверг, 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