Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Запуск fetchmail   Alex A. Mihaylov   22 Nov 2003 16:42:48 
 Re: Запуск fetchmail   Aleksey Barabanov   22 Nov 2003 17:10:12 
 Re: Запуск fetchmail   Alex A. Mihaylov   22 Nov 2003 21:31:03 
 Re: Запуск fetchmail   Aleksey Barabanov   22 Nov 2003 22:56:55 
 Re: Запуск fetchmail   Alex A. Mihaylov   22 Nov 2003 23:28:56 
 Re: Запуск fetchmail   Aleksey Barabanov   23 Nov 2003 00:57:05 
 Re: Запуск fetchmail   Victor Wagner   23 Nov 2003 01:01:25 
 Re:Запуск fetchmail   Pavel Marenyuk   23 Nov 2003 02:41:59 
 Re:Запуск fetchmail   Alex A. Mihaylov   23 Nov 2003 01:29:46 
Архивное /ru.linux/17781a51cb3b9.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional