[Comm] synaptic
Alexander Kharkov
=?iso-8859-1?q?umount_=CE=C1_bk=2Eru?=
Пт Окт 3 01:42:06 MSD 2003
В сообщении от 29 Сентябрь 2003 23:34 Alexander Kharkov написал(a):
> В сообщении от 28 Сентябрь 2003 18:36 Pyatnitskich Evgeniy написал(a):
> > Опубликуйте, пожалуйста.
>
> в аттаче
> исправления ошибок, ежели найдете или там добавления какие - высылайте,
> буду рад
люди, просящие меня прислать скрипт, да посмотрите пост, мой преддыдущий для
особо непонятливых привожу его тут целиком, я не имею возможности отвечать
всем лично к сожалению
------------------------------------кусь--------------------------------
#!/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
------------------------------------кусь----------------------------------
-----------------
Всех благ, Alexander
Подробная информация о списке рассылки community