Raspberry Amok Installation: Unterschied zwischen den Versionen
| Zeile 26: | Zeile 26: | ||
#!/bin/bash | #!/bin/bash | ||
# CONFIG | |||
APT_SOURCES="/etc/apt/sources.list" | |||
WVDIAL_CONF="/etc/wvdial.conf" | WVDIAL_CONF="/etc/wvdial.conf" | ||
USB_DEV="/dev/ttyUSB0" | USB_DEV="/dev/ttyUSB0" | ||
USB_BAUD="9600" | USB_BAUD="9600" | ||
| Zeile 43: | Zeile 39: | ||
GSM_PASS="t-d1" | GSM_PASS="t-d1" | ||
GSM_NUMBER="*99#" | GSM_NUMBER="*99#" | ||
PPPD="/usr/sbin/pppd" | PPPD="/usr/sbin/pppd" | ||
PAP_SECRETS="/etc/ppp/pap-secrets" | PAP_SECRETS="/etc/ppp/pap-secrets" | ||
CHAP_SECRETS="/etc/ppp/chap-secrets" | CHAP_SECRETS="/etc/ppp/chap-secrets" | ||
AMOK_SCRIPT="amok.sh" | |||
INVOKE_SCRIPT="invoke.sh" | |||
# CHECK PARAMETERS | # CHECK PARAMETERS | ||
USAGE="USAGE: $0 USERNAME GROUPNAME SIM-PIN HTTP HTTP-USER HTTP-PASS" | USAGE="USAGE: $0 SCRIPT-PATH USERNAME GROUPNAME SIM-PIN HTTP HTTP-USER HTTP-PASS" | ||
if [ $UID != 0 ]; then | if [ $UID != 0 ]; then | ||
echo "only root can execute this script!" | echo "only root can execute this script!" | ||
| Zeile 58: | Zeile 56: | ||
fi | fi | ||
USERNAME=$ | |||
SCRIPT_PATH=$1 | |||
if [ "$SCRIPT_PATH" = "" ]; then | |||
echo "missing SCRIPT_PATH" | |||
echo $USAGE | |||
exit 10 | |||
fi | |||
USERNAME=$2 | |||
if [ "$USERNAME" = "" ]; then | if [ "$USERNAME" = "" ]; then | ||
echo "missing USERNAME" | echo "missing USERNAME" | ||
echo $USAGE | echo $USAGE | ||
exit | exit 11 | ||
fi | fi | ||
GROUPNAME=$ | GROUPNAME=$3 | ||
if [ "$GROUPNAME" = "" ]; then | if [ "$GROUPNAME" = "" ]; then | ||
echo "missing GROUPNAME" | echo "missing GROUPNAME" | ||
echo $USAGE | echo $USAGE | ||
exit | exit 12 | ||
fi | fi | ||
PIN=$ | PIN=$4 | ||
if [ "$PIN" = "" ]; then | if [ "$PIN" = "" ]; then | ||
echo "missing SIM-PIN" | echo "missing SIM-PIN" | ||
echo $USAGE | echo $USAGE | ||
exit | exit 13 | ||
fi | fi | ||
HTTP=$ | HTTP=$5 | ||
if [ "$HTTP" = "" ]; then | if [ "$HTTP" = "" ]; then | ||
echo "missing HTTP" | echo "missing HTTP" | ||
echo $USAGE | echo $USAGE | ||
exit | exit 14 | ||
fi | fi | ||
HTTP_USER=$ | HTTP_USER=$6 | ||
if [ "$HTTP_USER" = "" ]; then | if [ "$HTTP_USER" = "" ]; then | ||
echo "missing HTTP-USER" | echo "missing HTTP-USER" | ||
echo $USAGE | echo $USAGE | ||
exit | exit 15 | ||
fi | fi | ||
HTTP_PASS=$ | HTTP_PASS=$7 | ||
if [ "$HTTP_PASS" = "" ]; then | if [ "$HTTP_PASS" = "" ]; then | ||
echo "missing HTTP-PASS" | echo "missing HTTP-PASS" | ||
echo $USAGE | echo $USAGE | ||
exit | exit 16 | ||
fi | fi | ||
INVOKE_SCRIPT=$SCRIPT_PATH/$INVOKE_SCRIPT | |||
AMOK_SCRIPT=$SCRIPT_PATH/$AMOK_SCRIPT | |||
| Zeile 122: | Zeile 130: | ||
# INSTALL PACKAGES | # INSTALL PACKAGES | ||
PACKAGES="wvdial python-dev python-rpi.gpio curl" | PACKAGES="wvdial python-dev python-rpi.gpio curl screen" | ||
INSTALL="" | INSTALL="" | ||
| Zeile 146: | Zeile 154: | ||
# WRITE CONFIG | # WRITE CONFIG | ||
CONFIG= | CONFIG=' | ||
[Dialer Defaults] | |||
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 | |||
Modem Type = Analog Modem | |||
ISDN = 0 | |||
Init1 = ATZ | |||
Modem = '$USB_DEV' | |||
Baud = '$USB_BAUD' | |||
[Dialer pin] | |||
Init3 = AT+CPIN='$PIN' | |||
[Dialer connect] | |||
Carrier Check = no | |||
Init4 = AT+CGDCONT=1,"IP","'$GSM_DST'" | |||
Stupid Mode = 1 | |||
Phone = '$GSM_NUMBER' | |||
Dialer Command = ATD | |||
Dial Attemps = 100 | |||
Username = '$GSM_USER' | |||
Password = '$GSM_PASS' | |||
' | |||
echo -e "$CONFIG" > $WVDIAL_CONF | echo -e "$CONFIG" > $WVDIAL_CONF | ||
| Zeile 187: | Zeile 196: | ||
# WRITE amok-script | # WRITE amok-script | ||
SCRIPT=' | |||
#!/bin/bash | |||
INVOKE="'$INVOKE_SCRIPT'" | |||
while true | |||
do | |||
# clear | |||
echo -n "press key > " | |||
read -n 1 KEY | |||
echo -e "" | |||
$INVOKE $KEY | |||
done | |||
' | |||
echo -e "$SCRIPT" > $AMOK_SCRIPT | |||
chown $USERNAME:$GROUPNAME $AMOK_SCRIPT | |||
chmod u=rwx,go= $AMOK_SCRIPT | |||
echo "wrote '$AMOK_SCRIPT'" | |||
# WRITE invoke-script | |||
SCRIPT=' | |||
#!/bin/bash | |||
KEY=$1 | |||
if [ "$KEY" = "" ]; then | |||
echo "missing input-key" | |||
exit 1 | |||
fi | |||
echo -e "$SCRIPT" > $ | if [[ $KEY =~ ^[0-9]+$ ]]; then | ||
chmod u=rwx,go= $ | URL="'$HTTP'?user='$HTTP_USER'&pass='$HTTP_PASS'&key=$KEY" | ||
echo "wrote '$ | RESULT="" | ||
wvdial pin 2> /dev/null | |||
screen -dmS wvdial_screen wvdial connect 2> /dev/null | |||
while true; do | |||
RESULT=`curl --connect-timeout 3 -s $URL` | |||
STATUS=`echo "$RESULT" | cut -d";" -f1` | |||
MESSAGE=`echo "$RESULT" | cut -d";" -f2` | |||
echo $MESSAGE | |||
case "$STATUS" in | |||
"ok") | |||
killall wvdial 2> /dev/null | |||
exit 0 | |||
;; | |||
"error") | |||
killall wvdial 2> /dev/null | |||
exit 99 | |||
;; | |||
*) | |||
sleep 1 | |||
;; | |||
esac | |||
done | |||
else | |||
echo "\"$KEY\" is no number!" | |||
exit 2 | |||
fi | |||
' | |||
echo -e "$SCRIPT" > $INVOKE_SCRIPT | |||
chown $USERNAME:$GROUPNAME $INVOKE_SCRIPT | |||
chmod u=rwx,go= $INVOKE_SCRIPT | |||
echo "wrote '$INVOKE_SCRIPT'" | |||
</source> | </source> | ||
Version vom 30. Januar 2013, 07:59 Uhr
Aufruf
./install-wvdial-amok.sh USERNAME GROUPNAME SIM-PIN HTTP HTTP-USER HTTP-PASS
Parameter
| Feld | Beschreibung |
|---|---|
| USERNAME | Name des Benutzers der später die GSM-Verbindung nutzen soll |
| GROUPNAME | Name der Gruppe die später die GSM-Verbindung nutzen soll |
| SIM-PIN | Pin der Sim-Karte für die GSM-Verbindung |
| HTTP | http-Adresse für die Alarmierung |
| HTTP-USER | Benutzername für die http-Alarmierung |
| HTTP-PASS | Passwort für die http-Alarmierung |
Skript
<source lang="bash">
- !/bin/bash
- CONFIG
APT_SOURCES="/etc/apt/sources.list"
WVDIAL_CONF="/etc/wvdial.conf" USB_DEV="/dev/ttyUSB0" USB_BAUD="9600" GSM_DST="internet.t-d1.de" GSM_USER="internet" GSM_PASS="t-d1" GSM_NUMBER="*99#"
PPPD="/usr/sbin/pppd" PAP_SECRETS="/etc/ppp/pap-secrets" CHAP_SECRETS="/etc/ppp/chap-secrets"
AMOK_SCRIPT="amok.sh" INVOKE_SCRIPT="invoke.sh"
- CHECK PARAMETERS
USAGE="USAGE: $0 SCRIPT-PATH USERNAME GROUPNAME SIM-PIN HTTP HTTP-USER HTTP-PASS" if [ $UID != 0 ]; then echo "only root can execute this script!" exit 1 fi
SCRIPT_PATH=$1 if [ "$SCRIPT_PATH" = "" ]; then echo "missing SCRIPT_PATH" echo $USAGE exit 10 fi
USERNAME=$2 if [ "$USERNAME" = "" ]; then echo "missing USERNAME" echo $USAGE exit 11 fi
GROUPNAME=$3 if [ "$GROUPNAME" = "" ]; then echo "missing GROUPNAME" echo $USAGE exit 12 fi
PIN=$4 if [ "$PIN" = "" ]; then echo "missing SIM-PIN" echo $USAGE exit 13 fi
HTTP=$5 if [ "$HTTP" = "" ]; then echo "missing HTTP" echo $USAGE exit 14 fi
HTTP_USER=$6 if [ "$HTTP_USER" = "" ]; then echo "missing HTTP-USER" echo $USAGE exit 15 fi
HTTP_PASS=$7 if [ "$HTTP_PASS" = "" ]; then echo "missing HTTP-PASS" echo $USAGE exit 16 fi
INVOKE_SCRIPT=$SCRIPT_PATH/$INVOKE_SCRIPT AMOK_SCRIPT=$SCRIPT_PATH/$AMOK_SCRIPT
- ADD REPOSITORIES
REPOS="deb http://security.debian.org testing/updates main contrib non-free"
echo "$REPOS" | while read REPO; do RESULT=`grep "$REPO" $APT_SOURCES 2> /dev/null` if [ "$RESULT" != "$REPO" ]; then echo "adding '$REPO' to $APT_SOURCES" echo -e "\n$REPO" >> $APT_SOURCES else echo "'$REPO' already in $APT_SOURCES" fi done
- INSTALL PACKAGES
PACKAGES="wvdial python-dev python-rpi.gpio curl screen" INSTALL=""
for PACKAGE in $PACKAGES; do if ! dpkg --get-selections $PACKAGE > /dev/null 2>&1; then echo "'$PACKAGE' is not installed" INSTALL="$INSTALL $PACKAGE" else echo "'$PACKAGE' is already installed" fi done
if [ "$INSTALL" != "" ]; then echo "installing$INSTALL" apt-get update apt-get install -y $INSTALL else echo "nothing new to install" fi
- WRITE CONFIG
CONFIG=' [Dialer Defaults] Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Modem Type = Analog Modem ISDN = 0 Init1 = ATZ Modem = '$USB_DEV' Baud = '$USB_BAUD'
[Dialer pin] Init3 = AT+CPIN='$PIN'
[Dialer connect] Carrier Check = no Init4 = AT+CGDCONT=1,"IP","'$GSM_DST'" Stupid Mode = 1 Phone = '$GSM_NUMBER' Dialer Command = ATD Dial Attemps = 100 Username = '$GSM_USER' Password = '$GSM_PASS' '
echo -e "$CONFIG" > $WVDIAL_CONF chmod u=rw,go=r $WVDIAL_CONF echo "wrote '$WVDIAL_CONF'"
- CHANGE SOME PERMISSIONS TO BE ABLE TO EXECUTE AS NON-ROOT
adduser $USERNAME dip adduser $USERNAME dialout
echo "changing permissions of ppp-files" chmod o+x,g+s $PPPD chown $USERNAME:$GROUPNAME $PAP_SECRETS chown $USERNAME:$GROUPNAME $CHAP_SECRETS
- WRITE amok-script
SCRIPT='
- !/bin/bash
INVOKE="'$INVOKE_SCRIPT'"
while true do
- clear
echo -n "press key > " read -n 1 KEY echo -e "" $INVOKE $KEY done '
echo -e "$SCRIPT" > $AMOK_SCRIPT chown $USERNAME:$GROUPNAME $AMOK_SCRIPT chmod u=rwx,go= $AMOK_SCRIPT echo "wrote '$AMOK_SCRIPT'"
- WRITE invoke-script
SCRIPT='
- !/bin/bash
KEY=$1
if [ "$KEY" = "" ]; then echo "missing input-key" exit 1 fi
if [[ $KEY =~ ^[0-9]+$ ]]; then URL="'$HTTP'?user='$HTTP_USER'&pass='$HTTP_PASS'&key=$KEY" RESULT="" wvdial pin 2> /dev/null screen -dmS wvdial_screen wvdial connect 2> /dev/null
while true; do RESULT=`curl --connect-timeout 3 -s $URL` STATUS=`echo "$RESULT" | cut -d";" -f1` MESSAGE=`echo "$RESULT" | cut -d";" -f2` echo $MESSAGE case "$STATUS" in "ok") killall wvdial 2> /dev/null exit 0 ;; "error")
killall wvdial 2> /dev/null
exit 99 ;; *) sleep 1 ;; esac done else
echo "\"$KEY\" is no number!"
exit 2
fi '
echo -e "$SCRIPT" > $INVOKE_SCRIPT chown $USERNAME:$GROUPNAME $INVOKE_SCRIPT chmod u=rwx,go= $INVOKE_SCRIPT echo "wrote '$INVOKE_SCRIPT'" </source>