BASH: Tilgin HG1331 Modemi Tek Komut İle Yeniden Başlatma (restart modem by script)

modem-HG1311Tilgin HG1311 modelli modemini (turkcell superonline’nın fiber Internet hizmeti için verdiklerinden biri) login olup da ilgili sayfalara girip de “Restart” düğmesine basıp modemi yeniden başlatma zahmetini çekmek istemeyenler aşağıdaki shell komutunu çalıştırarak panel login bilgilerini girerek otomatik olarak yeniden başlatabilirler.

Gereksinimler:

  • curl paketi
  • aşağıdaki modem-restart betik kodlarını modem-restart.sh adlı dosya oluşturarak içine yapıştırılmalı
  • modem-restart.sh dosyası için çalıştırma izni verilmeli

Kullanımı:

./modem-restart.sh -h modem_ip -u login_user

Çalışma şekli:

developer@dev:~$ ./modem-restart.sh -h 192.168.1.1 -u admin
Enter login password: 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  9675    0  9639  100    36   8707     32  0:00:01  0:00:01 --:--:--  8730
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2134    0  2120  100    14  66677    440 --:--:-- --:--:-- --:--:-- 73103

İstenirse modem-restart-output  dosyasından betik çıktıları incelenebilir.

modem-restart.sh betiği:

#!/bin/bash

# author: 	Erman Gülhan
# web site: 	blog.ermangulhan.com
# date: 	27.01.2013
#
# Restarts the modem with the model "Tilgin HG1113".

usage()
{
	echo "Usage: $0 -h host -u loginuser"
	exit 1
}

while getopts ":h:u:" opt; do
	case $opt in
    		h)h=$OPTARG;;
    		u)u=$OPTARG;;
    		\?)
      			echo "Invalid option: -$OPTARG" >&2
      			exit 1
      		;;
    		: )
      			echo "Option -$OPTARG requires an argument." >&2
      			exit 1
      		;;
  	esac
done

if test "$h" == "" 
then
	echo "Invalid host!"
	usage
fi

if test "$u" == "" 
then
	echo "Invalid login user!"
	usage
fi

echo "Enter login password: "
read -s p

if test "$p" == ""
then
	echo "Invalid login password!"
	exit 1
fi

curl -i -L -c vood_cookies --data "__user=$u&__pass=$p&__auth=login" $h > modem-restart-output  && curl -i -L -b vood_cookies $h/tools/restart/ --data "__form=restart" >> modem-restart-output && rm -f vood_cookies

Betik teknik açıklama:

curl -i -L -c vood_cookies --data "__user=$u&__pass=$p&__auth=login" $h > modem-restart-output  && curl -i -L -b vood_cookies $h/tools/restart/ --data "__form=restart" >> modem-restart-output && rm -f vood_cookies
  • -i: çıktıya http header bilgilerini dahil eder
  • -L: ilgili url’e istek sonrası eğer yönlendirme varsa buna izin verir
  • -c vood_cookies: eğer istek yapılan sayfadan cookie geliyorsa bunu vood_cookies adlı dosyaya yazar (bu cookie dosyasını sonraki curl isteğinde kullanacağız)
  • –data “__user=$u&__pass=$p&__auth=login”: ilgili değerler ile POST (application/x-www-form-urlencoded mime-type) isteği yapar
  • $h: istek yapılacak olan url bilgisi (kullanıcının girdiği modem ip adresi)
  • > modem-restart-output: adından da anlaşılacağı gibi betik standart çıktılarını modem-restart-output adlı dosyaya yazar
  • -b vood_cookies: vood_cookies dosyasındaki cookie bilgilerini kullanarak ilgili istek yapılır
  • $h/tools/restart/: istek yapılacak olan url
  • –data “__form=restart”: bu değerler ile POST isteği yapılır
  • >> modem-restart-output: bu dosyaya ikinci curl komut çıktısı eklenir
  • rm -f vood_cookies: son olarak da vood_cookies dosyası silinir
Print Friendly

Leave a Reply

Your email address will not be published. Required fields are marked *