Добавил уведомление на мыло о неверных ключиках... Протестил отправку с мыла яндекса, работает. По идее должно работать с любого сервера, который работает с SMTP, только если не STARTTLS (например, отправка с www.gmail.com работать не будет). Если на каких-нибудь сервисах будет попадать в спам, отпишите, возможно поправлю. Никаких проверок на ошибки отправки не делал. В общем, если где-то не будет работать, пишите, может быть поправлю.
Code:#!/bin/sh WEB_ROOT=/opt/share/www #путь к корневой папке домена, где будет лежать зеркало AVBASE_DIR=nod3 #имя папки, куда будут валиться базы SERVER=http://update.eset.com #сервер, откуда обновляемся ################################################################################# # Раскоментировать что-либо одно!!!!! # # DIR=nod_upd #Раскоментировать если нужно зеркало для версии 2 # DIR=eset_upd #Раскоментировать если нужно зеркало для версии 3 или ESS # ################################################################################# #Ключики для обновления NOD32 с официальных серверов USER=***-******** PASS=********** #Здесь задаются параметры уведомления на мыло MAILTO=server@mail.com # Адрес куда слать уведомления об ошибках LOGIN=WL-500gP # Логин мыла с которого шлем DOMAIN=yandex.ru # Доменная часть мыла с которого шлем SMTP=smtp.yandex.ru # Адрес SMTP-сервера мыла с которого шлем PASS_SMTP=********* # Пароль мыла с которого шлем senderror() { base64_PASS_SMTP=$(echo $PASS_SMTP|base64) base64_LOGIN=$(echo $LOGIN|base64) DATE=`date +'%d.%m.%y %T'` header="Date: $DATE\n" header=$header'From: ТВОЙ РОУТЕР<'$LOGIN@$DOMAIN'>\n' header=$header'Message-ID: <172562218.'`date +'%d%m%y%H%M%S'`'@'$DOMAIN'>\n' header=$header'To: <'$MAILTO'>\n' header=$header'Subject: Обновление зеркала NOD32\n\n' text="$DATE - Во время последнего обновления зеркала NOD32 произошла ошибка.\n" text=$text$ERROR start="EHLO WL-500gP\nAUTH LOGIN\n$base64_LOGIN\n$base64_PASS_SMTP\nMAIL FROM:$LOGIN@$DOMAIN\nRCPT TO:$MAILTO\nDATA\n" echo -e "$start$header$text\n.\nQUIT\n"|nc $SMTP 25 } if [ ! -f "/var/run/$AVBASE_DIR.PID" ]; then echo $$ > /var/run/$AVBASE_DIR.PID else echo Процесс обновления зеркала уже запущен. Пожалуйста дождитесь его окончания. echo Если Вы уверены что это не так, то удалите файл /var/run/$AVBASE_DIR.PID exit fi cd $WEB_ROOT mkdir -p $WEB_ROOT/$AVBASE_DIR mkdir -p $WEB_ROOT/$AVBASE_DIR/tmp cd $WEB_ROOT/$AVBASE_DIR/tmp /opt/bin/wget -q -N -nv --cache=off -t 5 --connect-timeout=20 $SERVER/$DIR/update.ver mv -f update.ver update.rar /opt/bin/unrar x -y -inul update.rar if [ ! -f "update.ver" ]; then mv -f update.rar update.ver fi SERVERS=`grep Other= update.ver|grep -v 'Telefonica-Other='|sed s/Other=//|tr -d "\r"|sed s/,/'\n'/g|sed s/^.*@//|sed s/$DIR//|sed s/'\n'/' '/|sed 1d` rm -f update.ver rm -f update.rar rm -f $WEB_ROOT/$AVBASE_DIR/log.txt for UPDSERVERS in $SERVERS; do cp -f -p $WEB_ROOT/$AVBASE_DIR/update.ver $WEB_ROOT/$AVBASE_DIR/tmp/update.old /opt/bin/wget -nv -a log.txt -N --cache=off -t 5 --connect-timeout=20 $UPDSERVERS/$DIR/update.ver if [ "update.ver" -nt "update.old" ]; then mv -f update.ver update.rar /opt/bin/unrar x -y -inul update.rar if [ ! -f "update.ver" ]; then cp -f -p update.rar update.ver fi IFS=[ for section in `cat update.ver|sed '1s/\[//;s/^ *//'|grep -v '^#'|grep -v '^$'`; do ######################################################################################### # ЗАКОМЕНТИРОВАТЬ здесь НУЖНЫЕ языки # # sect=$(echo $section|sed 's/^.*_CZECH_.*]/DELETE]/') # Чешский # # sect=$(echo $sect|sed 's/^.*_ENGLISH_.*]/DELETE]/') # Английский # sect=$(echo $sect|sed 's/^.*_FRENCH_.*]/DELETE]/') # Французкий # sect=$(echo $sect|sed 's/^.*_GERMAN_.*]/DELETE]/') # Немецкий # sect=$(echo $sect|sed 's/^.*_ITALIAN_.*]/DELETE]/') # Итальянский # sect=$(echo $sect|sed 's/^.*_JAPANESE_.*]/DELETE]/') # Японский # sect=$(echo $sect|sed 's/^.*_POLISH_.*]/DELETE]/') # Польский # sect=$(echo $sect|sed 's/^.*_PORTUGUESE_.*]/DELETE]/') # Португальский # sect=$(echo $sect|sed 's/^.*_SLOVAK_.*]/DELETE]/') # Словацкий # sect=$(echo $sect|sed 's/^.*_SPANISH_.*]/DELETE]/') # Испанский # sect=$(echo $sect|sed 's/^.*_CROATIAN_.*]/DELETE]/') # Хорватский # sect=$(echo $sect|sed 's/^.*_HUNGARIAN_.*]/DELETE]/') # Венгерский # sect=$(echo $sect|sed 's/^.*_CHINESE_.*]/DELETE]/') # Китайский # sect=$(echo $sect|sed 's/^.*_DUTCH_.*]/DELETE]/') # Датский # ######################################################################################################################### # Файлы обновлений для уменьшения трафика # # ЗАКОМЕНТИРОВАТЬ если ЗАГРУЖАТЬ # # sect=$(echo $sect|sed 's/^CONTINUOUS_.*]/DELETE]/;s/^REVERSE_.*]/DELETE]/;s/^PRELIMINARY_.*]/DELETE]/') # ######################################################################################################################### sect=$(echo $sect|sed 's/^VER]/DELETE]/;s/^HOSTS]/DELETE]/;s/^Expire]/DELETE]/;s/^SETUP]/DELETE]/;s/^COMPATLIST]/DELETE]/;s/^data0001]/DELETE]/') if [ -z $(echo $sect|grep '^DELETE]') ]; then eval $(echo $sect|tr -d "\r"|grep 'file='|sed 's/ *=/=/;s/= */=/') cp -f $WEB_ROOT/$AVBASE_DIR/tmp/log.txt $WEB_ROOT/$AVBASE_DIR/log.txt cd $WEB_ROOT/$AVBASE_DIR /opt/bin/wget -nv -a log.txt -N --cache=off -t 5 --connect-timeout=20 --http-user=$USER --password=$PASS $UPDSERVERS/$file cd $WEB_ROOT/$AVBASE_DIR/tmp cp -f $WEB_ROOT/$AVBASE_DIR/log.txt $WEB_ROOT/$AVBASE_DIR/tmp/log.txt Auth=`grep 'Authorization failed' log.txt` if [ ${#Auth} != 0 ]; then echo Неверные ключики rm -f log.txt echo Неверные ключики > log.txt rm -f update.rar rm -f update.old rm -f update.ver mv -f $WEB_ROOT/$AVBASE_DIR/tmp/log.txt $WEB_ROOT/$AVBASE_DIR/log.txt rm -r -f $WEB_ROOT/$AVBASE_DIR/tmp rm -f /var/run/$AVBASE_DIR.PID rm -f $WEB_ROOT/$AVBASE_DIR/update.new ERROR="Зеркало $WEB_ROOT/$AVBASE_DIR не было обновлено. Пора бы найти новые рабочие ключики... :-)" senderror exit fi Saved=`grep '$file.* saved' log.txt` if [ ${#Saved} != 0 ]; then echo Ошибка загрузки файла rm -f log.txt echo Ошибка загрузки файла $file > log.txt rm -f update.rar rm -f update.old rm -f update.ver mv -f $WEB_ROOT/AVBASE_DIR/tmp/log.txt $WEB_ROOT/$AVBASE_DIR/log.txt rm -r -f $WEB_ROOT/$AVBASE_DIR/tmp rm -f /var/run/$AVBASE_DIR.PID rm -f $WEB_ROOT/$AVBASE_DIR/update.new exit fi echo [$(echo $sect|sed 's/file=.*\//file=/') >> $WEB_ROOT/$AVBASE_DIR/update.new fi done IFS=' ' cd $WEB_ROOT/$AVBASE_DIR if [ -f "update.new" ]; then rm -f update.ver mv -f update.new update.ver /opt/bin/touch -am -r $WEB_ROOT/$AVBASE_DIR/tmp/update.rar $WEB_ROOT/$AVBASE_DIR/update.ver fi fi cd $WEB_ROOT/$AVBASE_DIR/tmp rm -f update.rar rm -f update.old rm -f update.ver done mv -f $WEB_ROOT/$AVBASE_DIR/tmp/log.txt $WEB_ROOT/$AVBASE_DIR/log.txt rm -r -f $WEB_ROOT/$AVBASE_DIR/tmp rm -f /var/run/$AVBASE_DIR.PID


Reply With Quote


