From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Alexander Kharkov Organization: GIVC To: community@altlinux.ru Subject: Re: [Comm] synaptic Date: Mon, 29 Sep 2003 23:34:27 +0400 User-Agent: KMail/1.5.4 References: <200309270239.12617.x-plod@xaker.ru> <200309280300.07100.umount@bk.ru> <20030928143646.GA16569@nm.ru> In-Reply-To: <20030928143646.GA16569@nm.ru> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_DlIe/8wEWL11kPE" Message-Id: <200309292334.28030.umount@bk.ru> X-Spam: Not detected X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.2 Precedence: list Reply-To: community@altlinux.ru List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2003 19:34:40 -0000 Archived-At: List-Archive: List-Post: --Boundary-00=_DlIe/8wEWL11kPE Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 8bit Content-Disposition: inline В сообщении от 28 Сентябрь 2003 18:36 Pyatnitskich Evgeniy написал(a): > > Опубликуйте, пожалуйста. в аттаче исправления ошибок, ежели найдете или там добавления какие - высылайте, буду рад -- ----------------- Всех благ, Alexander --Boundary-00=_DlIe/8wEWL11kPE Content-Type: application/x-shellscript; name="netnight" Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="netnight" #!/bin/sh # Скрипт для дозвона до провайдера с скачиванием апдейтов для сизифа # с последующим отключением от линии. При возникновении ошибок линия # сбрасывается, и дозвон осуществляеся снова # Copyright (c) Alexander Kharkov 2003 # Установка переменных PATH=/bin:/sbin:/usr/bin:/usr/sbin FREETIME=9 DROPLINE=0 POWEROFF=0 MAXTRYNO=5 DEBUG=0 PIDFILE=/var/run/netnight.pid CURRUNPID=0 # Функция проверяет наличие интерфеса ppp0 # Если интерфес не поднят - возвращает ошибку # Может подождать с определением, если указать # один числовой параметр. В этом случае функция # ждет указанное количество секунд и только после # этого проверяет интерфейс is_ppp_up() { if [ $DEBUG -eq 1 ]; then echo "in is_ppp_up()" fi if [ $# -lt 1 ]; then if [ $DEBUG -eq 1 ]; then echo We will not sleep!!! fi else expr $1 + 1 > /dev/null 2>&1 STATUS=$? if [ "$STATUS" != "0" ]; then echo `basename $0` : First parameter is not valid >&2 echo `basename $0` : $1 is not a number!!!! >&2 echo `basename $0` : Setting default interval - 1 minute >&2 INTERVAL=60 else INTERVAL=$1 fi if [ $DEBUG -eq 1 ]; then echo "Sleeping for $INTERVAL second(s)" fi sleep $INTERVAL fi if ifconfig | grep ppp0 > /dev/null 2>&1 then if [ $DEBUG -eq 1 ]; then echo We are online at `date` fi return 0 else if [ $DEBUG -eq 1 ]; then echo We are offline at `date` fi return 1 fi if [ $DEBUG -eq 1 ]; then echo "out is_ppp_up()" fi } # Функция поднимает интерфейс ppp0. В случае если он # уже поднят функция или перезавниевает, если функции # переается аргумент или не делает ничего ppp_up() { if [ $DEBUG -eq 1 ]; then echo "in ppp_up()" fi if [ $# -lt 1 ]; then if [ $DEBUG -eq 1 ]; then echo We will drop line!!!! echo Trying to down ppp0 at `date` fi STATUS=1 while [ "$STATUS" != "0" ]; do ifdown ppp0 STATUS=$? done echo ppp0 down at `date` else if [ $DEBUG -eq 1 ]; then echo We will not drop line!!! fi fi echo Trying to connect to Internet if is_ppp_up > /dev/null then if [ $DEBUG -eq 1 ]; then echo `basename $0` : We are already online echo `basename $0` : If you want to REdial call ppp_up without echo `basename $0` : any parameters fi return 1 fi STATUS=1 while [ $STATUS -ne 0 ]; do ifup ppp0 STATUS=$? if [ $STATUS -ne 0 ]; then ifdown ppp0 sleep 30 fi done echo ppp0 is upped at `date` if [ $DEBUG -eq 1 ]; then echo "out ppp_up()" fi return 0 } # Функция выводит краткую справку по программе usage() { echo "Program to automatic dialing and downloading" echo "updates for Alt Linux Sisyphus". echo "You can use this parameters:" echo "-h or --help - this screen" echo "-d or --dropline - disconnect from Internet while" echo " download all uodates successfully" echo "-p or --poweroff - power off the machine after" echo " downloading updates" echo "--debug - display debug information" exit 0 } # Функция на выходе из программы atexit() { if [ $DROPLINE -eq 1 ] ; then ifdown ppp0 fi rm -f $PIDFILE # по идее надо бы удалять pid файл в самом конце # но в связи "необычностью" выхода с выклчением # PID файл удалаяется до того, как отработает # вся программа if [ $POWEROFF -eq 1 ] ; then poweroff fi } # Функция при старте atstart() { echo Starting script at `date` echo $$ > $PIDFILE ppp_up 1 } # Запускает строки, которые предаются функции в качестве параметров runcommand() { if [ $DEBUG -eq 1 ]; then echo "Entering runcommand at `date`" fi if [ $# -eq 0 ] ; then echo "`basename $0` : Command not defined in run function runcommand" >&2 exit 1 fi if [ $DEBUG -eq 1 ]; then echo "Entering while cycle in runcommand" fi while [ $# -gt 0 ]; do STAT=1 if [ $DEBUG -eq 1 ]; then echo "Entering buildin while cycle in func runcommand" fi TRYNO=0 while [ $STAT -ne 0 ]; do $1 STAT=$? if [ $STAT -ne 0 ]; then TRYNO=`expr $TRYNO + 1` if [ $DEBUG -eq 1 ]; then echo Running $1 unsuccessfull fi CURHOUR=`date +%k` if [ $CURHOUR -lt $FREETIME ]; then echo "Redialing" ppp_up else echo "Free time is out!" echo "Current time: `date +%T`" atexit exit 0 fi fi if [ $TRYNO -eq $MAXTRYNO ]; then echo "We have maximum number of errors!!! Skipping command $1" return 1 fi done if [ $DEBUG -eq 1 ]; then echo "Leaving buildin while cycle in func runcommand" fi shift done if [ $DEBUG -eq 1 ]; then echo "Leaving while cycle in runcommand" echo "Leaving runcommand at `date`" fi } # Основная программа while [ $# -gt 0 ]; do case $1 in -d|--dropline) DROPLINE=1 ;; -p|--poweroff) POWEROFF=1 ;; -h|--help) usage ;; --debug) DEBUG=1 ;; *) echo "$1 - is not a valid parameter! Try ---help for more information" >&2; atexit; exit 1 esac shift done atstart runcommand "apt-get -q update" runcommand "apt-get -y autoclean" runcommand "apt-get -q -y -d dist-upgrade" runcommand "apt-get -q -y -d install kernel-modules-.*-std-up" #здесь можно загнать другие команды atexit --Boundary-00=_DlIe/8wEWL11kPE--