|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Alex A. Mihaylov 2:5020/400 22 Nov 2003 16:42:48 To : Valery Shishkov Subject : Re: Запуск fetchmail -------------------------------------------------------------------------------- Valery Shishkov wrote: AD>>>ответь, пожалуйста, на поставленный вопрос. как ты хочешь чтобы AD>>>fetchmail работал в условиях отсутствия интернета? ID>> Пускать его из ip-up скрипта (не в качестве демона). VS> Можно и демоном из ip-up, только не забыть потом в ip-down его VS> положить. Слишком много слов, и мало дела. Этот скрит проверяет есть ли соединение с ИHетом. Если есть, забирает почту и новости, если нет, устанавливает, забирает и рвет соединение. ============ #!/bin/bash IFACE=ppp1 CONNECTED=0 /etc/internet/ctrl check $IFACE if [ $? -eq 0 ]; then echo "State->Disconnecting => Establish connection" /etc/internet/ctrl up $IFACE else CONNECTED=1 echo "State->Connected => Running queue" fi echo Forcing mail query... sudo /usr/sbin/sendmail -q >/dev/null 2>/dev/null echo Fetching mail from internet mailbox... /usr/bin/fetchmail >/dev/null 2>/dev/null echo Fetching news from newserver... sudo /usr/local/sbin/fetchnews >/dev/null 2>/dev/null echo Forcing mail query for local delivery... sudo /usr/sbin/sendmail -q >/dev/null 2>/dev/null if [ $CONNECTED -eq 0 ]; then /etc/internet/ctrl down $IFACE fi ============ Это скрипт /etc/internet/ctrl ============ #!/bin/sh if [ -f /etc/internet/functions ]; then . /etc/internet/functions fi show_usage() { echo "Usage $0 [UP/DOWN/CHECK] [IFACE]" echo " $0 [STAT] [USER]" } if [ $# == 2 ]; then case $1 in UP|up) echo Bringing up $2... connect $2 ;; DOWN|down) echo Disconnecting from $2... disconnect $2 ;; CHECK|check) echo Checking connection to $2... exit `is_connected $2` ;; STAT|stat) statistics $2 ;; *) show_usage esac; else show_usage fi; ================ а это функции, в нем использованные (/etc/internet/functions) ================ ####################################################### # This function flush and write iptables # chain statistics iptables_flush_chain() { sudo /sbin/iptables -x -v -L $1 -Z | \ grep $1 | \ sed s/"Chain $1 (policy ACCEPT "//g | \ sed s/")"//g | \ sed s/"packets,"//g |\ sed s/"bytes"//g |\ sed s/"Zeroing chain"//g |\ sed s/"\`$1'"//g } ####################################################### # This function show iptables statistics and # flush chains iptables_flush() { TODAY=`date +"%D %T"` OUTPUT=`iptables_flush_chain OUTPUT` echo $TODAY $OUTPUT >> /var/log/internet/$USER.output.log INPUT=`iptables_flush_chain INPUT` echo $TODAY $INPUT >> /var/log/internet/$USER.input.log } ####################################################### # This function test connection for already established is_connected() { CONNECTED=0 /sbin/ifconfig | grep ppp >/dev/null && CONNECTED=1 return $CONNECTED } ####################################################### # This function establish connection to internet connect() { ########################## # Check connection for # already aviable is_connected $1 if [ $? == 0 ]; then ########################## # Clean iptables counters iptables_flush_chain INPUT > /dev/null iptables_flush_chain OUTPUT > /dev/null ########################## # Establish connection /sbin/ifup $1 else echo Connection failure becourse connection already established... fi; } ####################################################### # This function hangup connection and flush statistics disconnect() { ########################## # Check connection for # not aviable is_connected $1 if [ $? == 1 ]; then ########################## # Disconnecting from # network /sbin/ifdown $1 ########################## # Flush iptables # statistics iptables_flush else echo Disconnecting failure becourse connection not aviable... fi; } statistics() { echo "Summary" gawk '{ pack += $3 }; { byt += $4 }; END { print "Input packet:",pack,", bytes:",byt }' /var/log/internet/$1.input.log gawk '{ pack += $3 }; { byt += $4 }; END { print "Output packet:",pack,", bytes:",byt }' /var/log/internet/$1.output.log } ============ Он кстати, и трафик по iptables считает. Hо если гуру эти фишки раскритикуют (и еще лучше исправят) я против не буду ;-) -- Alex A. Mihaylov MinimumLaw(a)NwGsm.Ru --- ifmail v.2.15dev5.1 * Origin: Golden Telecom (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/17781a51cb3b9.html, оценка из 5, голосов 10
|