1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
|
#!/bin/bash
# $Id: fctStartAdsl,v 1.25 2005/01/16 22:04:34 Tux Exp $
# Copyright (C) 2003-2005 Olivier Borowski
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Goal :
# start ADSL connexion (do not display anything)
# Params :
# h = display help
# m = start mire
# s = simple mode (don't use ifup & ifdown scripts => do not requiere ifcfg-ethX)
# t = set timeout delay (default=60s)
# a = use ip address (use -a xx.xx.xx.xx), imply simple mode
# d = launch pppd in debug mode
# i = for launch with pty option of pppd
# // old usage : only put modem interface up (ifup ethX)
# k = keep: garder la main Ns (ou jusqu' ce que connexion ok)
# Error codes :
# 1 = pppd already lauched (non degroup)
# 2 = modem can't be synchronized
# 3 = can't launch pppd
# 4 = can't set modem interface "up"
# 5 = eagle-usb must be configured once time
# 6 = non pppd users can't use startadsl -m
# the following line will be replaced by the absolute path of setvars
exit 123
set -- "${@//#--help/-h}"
set -- "${@//#--mire/-m}"
set -- "${@//#--simple/-s}"
set -- "${@//#--timeout=/-t}"
set -- "${@//#--ifup/-i}"
set -- "${@//#--ip=/-a}"
set -- "${@//#--ip/-a}"
set -- "${@//#--keep=/-k}"
set -- "${@//#--debug/-d}"
evalParams() {
while getopts "hmst:a:dik:" opt; do
case $opt in
h ) doInUtf8 echo -e $FCTSTART_USAGE_MSG ; exit 0 ;;
m ) MIRE=1 ;;
s ) SIMPLE=1 ;;
t ) TIMEOUT=$OPTARG ;;
a ) STATIC_IP=$OPTARG ; SIMPLE=1 ;;
d ) PPPD_DEBUG=1 ;;
i ) DONT_START=1 ;;
k ) KEEP=$OPTARG ;;
\? ) doInUtf8 echo -e $FCTSTART_USAGE_MSG ; exit 1 ;;
esac
done
}
ping_test_mt() {
touch /tmp/setvars_ping_mt
PING_MT_RES=1
while [ $PING_MT_RES -ne 0 ]
do
sleep 2
ping_w $1 $2
PING_MT_RES=$?
done
rm -f /tmp/setvars_ping_mt
}
ping_w_maxtimeout() {
ping_test_mt $1 $2 &
PID_PING_MT=$!
kill_ping $PID_PING_MT $2 &
wait ${PID_PING_MT} 2>/dev/null
if [ -e /tmp/setvars_ping_mt ] ; then
rm -f /tmp/setvars_ping_mt
return 1
fi
return 0
}
#STATIC_IP="none"
MIRE=0
TIMEOUT=60
DONT_START=0
PPPD_DEBUG=0
KEEP=0
evalParams "$@"
# eagleconfig has never been run => quit
if [ -f $EU_DIR/eagle-usb_must_be_configured ] ; then
exit 5
fi
if [ "$PPPOX" != "none" ] ; then
# startadsl or startmire?
if [ $MIRE -eq 1 ] ; then
OPTIONS=$PPP_OPTIONS_MIRE
else
OPTIONS=$PPP_OPTIONS_ADSL
fi
# pppd already lanched?
if [ $DONT_START -eq 0 -a ! -z "`pidof pppd`" ] ; then
exit 1
fi
else
# mire can only be used by pppd users
if [ $MIRE -eq 1 ] ; then
exit 6
fi
fi
# waiting Nsec for synchro (default: N=60)
$EAGLECTRL -s$TIMEOUT &>/dev/null
if [ $? -ne 0 ] ; then
exit 2
fi
if [ ! -z "`route | grep default`" ] ; then
route del default
fi
INTERFACE="`$EAGLECTRL -i`"
if [ "$PPPOX" = "none" ] ; then
# ===== non pppd => only ifup =====
if [ "$STATIC_IP" != "none" ] ; then
GATEWAY="`echo $STATIC_IP | cut -d '.' -f1-3`.254"
ifconfig $INTERFACE $STATIC_IP netmask 255.255.255.0
if [ $? -ne 0 ] ; then exit 4 ; fi
route add default gw $GATEWAY
else
if [ $USE_IFUPDOWN -eq 1 -a $SIMPLE -eq 0 ] ; then
ifup $INTERFACE &>/dev/null
else
dhclient $INTERFACE &>/dev/null
fi
if [ $? -ne 0 ] ; then exit 4 ; fi
fi
else
# ===== pppd => ifup & pppd =====
if [ $DONT_START -eq 1 ] ; then
RES="`ifconfig | grep $INTERFACE`"
if [ -z "$RES" ] ; then
# - pppd call adsl => interface is not up yet
# - startadsl => interface is already up, skip this step
if [ $USE_IFUPDOWN -eq 1 -a $SIMPLE -eq 0 ] ; then
ifup $INTERFACE &>/dev/null
else
ifconfig $INTERFACE 0.0.0.0 up
fi
fi
exec $PPPOX -I $INTERFACE 2>/dev/null
fi
if [ $USE_IFUPDOWN -eq 1 -a $SIMPLE -eq 0 ] ; then
ifup $INTERFACE &>/dev/null
else
ifconfig $INTERFACE 0.0.0.0 up
fi
if [ "$DISTRIB" != "Suse" ] ; then
if [ $PPPD_DEBUG -eq 0 ] ; then
pppd file $OPTIONS &>/dev/null
else
pppd debug file $OPTIONS 2>&1 | logger
fi
if [ $? -ne 0 ] ; then exit 4 ; fi
else
if [ $PPPD_DEBUG -eq 0 ] ; then
pppd file $OPTIONS &>/dev/null &
else
pppd debug file $OPTIONS 2>&1 | logger &
fi
fi
fi
if [ $KEEP != 0 ] ; then
ping_w_maxtimeout 213.228.0.42 $KEEP
exit $?
else
exit 0
fi
#***************************************************************************
# $Log: fctStartAdsl,v $
# Revision 1.25 2005/01/16 22:04:34 Tux
# - add license header
#
# Revision 1.24 2005/01/04 21:14:05 Tux
# - switch strings to utf-8
#
# Revision 1.23 2004/11/21 15:29:41 Tux
# - replaced == with -eq
#
# Revision 1.22 2004/11/11 16:21:26 mcoolive
# - renaming $EU_SCRIPT_DIR/lock in $EU_DIR/eagle-usb_must_be_configured
#
# Revision 1.21 2004/11/11 15:29:10 mcoolive
# - improve comments
#
# Revision 1.20 2004/11/11 10:56:04 mcoolive
# - tests are simplified ( && -> -a ; || -> -o )
#
# Revision 1.19 2004/11/04 23:54:18 mcoolive
# - shift error>=7 (exit and comments) for the "6 = modem not operational"
#
# Revision 1.18 2004/11/04 20:03:42 Tux
# - only allow users using pppd to connect to the mire
#
# Revision 1.17 2004/09/28 10:06:43 mcoolive
# - to respect POSIX: commands are typed "int main..."
# => replace "$? !=" by "$? -ne"
#
# Revision 1.16 2004/09/14 21:00:31 Tux
# - redirect debug mode (-d) output to syslog instead of /dev/null !
#
# Revision 1.15 2004/08/26 21:40:48 Tux
# - add exec to avoid an unuseful process
#
# Revision 1.14 2004/08/10 16:51:13 Tux
# - removed an unuseful condition
#
# Revision 1.13 2004/08/09 21:26:31 Tux
# - add pppoe support for "fctStartAdsl -i"
#
# Revision 1.12 2004/08/01 20:12:07 Tux
# - hide messages when launching startadsl within a terminal
#
# Revision 1.11 2004/07/19 20:43:21 Tux
# - "fctStartAdsl -i" now start pppoa itself (no more use of pty "...pppoa -I $IF" )
#
# Revision 1.10 2004/07/16 21:08:58 Tux
# - simplify parameters processing
#
# Revision 1.9 2004/06/08 19:47:05 Tux
# - 1.9.8
#
# Revision 1.8 2004/04/24 10:57:14 Tux
# - network mask changed from 255.255.255.255 to 255.255.255.0
# for non-pppd users
#
# Revision 1.7 2004/04/21 20:07:52 Tux
# *** empty log message ***
#
# Revision 1.6 2004/04/21 19:59:37 Tux
# - virtual interface does not use an IP anymore
#
# Revision 1.5 2004/04/21 18:19:21 Tux
# - some changes with ">/dev/null"
#
#***************************************************************************/
|