GrandstreamGxp2010Reboot


#!/bin/sh

# This script reboots a Grandstream GXP2010 phone invoking wget under Linux.
# The GXP2010 here has the hardware version 0.2B.
# At least the firmware versions from 1.2.2.26 to 1.2.5.3 do work.
# This script has been tested under Debian Lenny with wget 1.11.4,
# and under DD-WRT v24-presp2-13064 mini on a Linksys WRT54GL v1.1 router
# with wget_1.11-4_mipsel.ipk from http://www.timpinkawa.net/ddwrt/wget.html.
# No write access is necessary, except for /dev/stdout and friends, of course.

# This script was written by Stephan Seidl in 2010, no copyright is claimed.
# It is offered as-is, without any warranty.
# This script is in the public domain; do with it what you wish.

unset LANG LC_ALL
LC_ALL=C
export LC_ALL

WGET=/jffs/usr/bin/wget
HOSTNAME=tel1.snet
PASSWORD="<passwd>"

test -x ${WGET} || WGET=wget

accessdata=/jffs/usr/bin/SmallSystemsAccessData
test -e ${accessdata} || accessdata=/jffs/etc/SmallSystemsAccessData
test -e ${accessdata} || accessdata=/etc/SmallSystemsAccessData
if [ -r ${accessdata} ]; then
  . ${accessdata}
  PASSWORD="${tel1_passwd}"
  fi

cmd="${WGET}"
cmd="${cmd} -o /dev/null -O -"
cmd="${cmd} http://${HOSTNAME}"
out=`${cmd}`
out=`echo "${out}" | tr '\015' ' '`
out=`echo "${out}" | tr '\011' ' '`
out=`echo "${out}" | tr '"' '@'`
out=`echo "${out}" | sed 's,@,,g'`
out=`echo "${out}" | sed 's,<,@<,g'`
out=`echo "${out}" | sed 's,>,>@,g'`
out=`echo "${out}" | tr '\012' ' '`
out=`echo "${out}" | tr '@' '\012'`
out=`echo "${out}" | sed -n 's,< *input  *, ,p'`
out=`echo "${out}" | sed 's, *>, ,'`
namepassword="${out}"
namepassword=`echo "${namepassword}" | grep ' type=password '`
namepassword=`echo "${namepassword}" | tr ' ' '\012'`
namepassword=`echo "${namepassword}" | sed -n 's,^name=,,p'`
valuelogin="${out}"
valuelogin=`echo "${valuelogin}" | grep ' name=Login '`
valuelogin=`echo "${valuelogin}" | tr ' ' '\012'`
valuelogin=`echo "${valuelogin}" | sed -n 's,^value=,,p'`
valuegnkey="${out}"
valuegnkey=`echo "${valuegnkey}" | grep ' name=gnkey '`
valuegnkey=`echo "${valuegnkey}" | tr ' ' '\012'`
valuegnkey=`echo "${valuegnkey}" | sed -n 's,^value=,,p'`

cmd="${WGET}"
cmd="${cmd} --keep-session-cookies --save-cookies /proc/self/fd/1"
cmd="${cmd} -o /dev/null -O /dev/null"
cmd="${cmd} --post-data=${namepassword}=${PASSWORD}'&'Login=${valuelogin}'&'gnkey=${valuegnkey}"
cmd="${cmd} http://${HOSTNAME}/dologin.htm"
out=`eval "${cmd}"`
out=`echo "${out}" | tr '\015' ' '`
out=`echo "${out}" | tr '\011' ' '`
cookie="${out}"
cookie=`echo "${cookie}" | sed -n 's,^.* 0  *SessionId  *,,p'`

cmd="${WGET}"
cmd="${cmd} --no-cookies --header \"Cookie: SessionId=${cookie}\""
cmd="${cmd} -o /dev/null -O /dev/null"
cmd="${cmd} http://${HOSTNAME}/rs.htm"
eval "${cmd}"


Stephan K.H. Seidl