Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Automatyczny restart routera Pentagram P6331-42 przy pomocy PHP
Forum PHP.pl > Forum > Przedszkole
grzewoj
Witam wszystkich, jak widać to mój pierwszy post na tym forum, od razu przejdę do rzeczy.

Chciałbym mieć możliwość restartu mojego routera jak w temacie, za pomocą wywołania skryptu PHP. Jako że przeszukałem Internet, wiem że jest mnóstwo rozwiązań, począwszy od skryptów bat, vbs, po użycie innych języków, w tym CURLa. Skoro temat już rozwiązano to czemu piszę? Problem w tym, że do użycia tego skryptu nie mogę użyć komputera a ... telewizora. Mam samsunga Le40C650 z funkcją Internet@TV. Dzięki niemu mogę oglądać mnóstwo materiałów z netu, w tym np. z Megavideo, który jak wiadomo ma limity, do ominięcia po zmianie IP. Z poziomu TV mogę uruchomić skrypt php, kieruję więc do szanownych forumowiczów pytanie, czy wogóle jest możliwe automatyczne zalogowanie do routera i jego restart lub lepiej restart samego połączenia. Dodam że logowanie do tego modemu jest zrealizowane poprzez HTTP Basic Authorization.

Dzięki za wszelkie sugestie!
Kamil Pietrzak
cURL jest tez w PHP
PS: na portalu jest art na ten temat
grzewoj
Napisałem taki skrypt, posiłkując się znalezionymi informacjami:

  1.  
  2. <?php
  3.  
  4. $curl = curl_init();
  5. curl_setopt($curl, CURLOPT_URL, "http://192.168.1.1/maintenance/tools_system.htm");
  6. curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  7. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt($curl, CURLOPT_USERPWD, base64_encode('login:haslo'));
  9.  
  10. $data = curl_exec($curl);
  11. curl_close($curl);
  12. echo $data;
  13. ?>
  14.  


Niestety nie działa, czy ktoś mógłby mnie naprowadzić na właściwe tory? Jakich nagłówków mi brakuje? Cały czas otrzymuję "Protected Object
This object on the RomPager server is protected" zamiast strony, co znaczy że autoryzacja nie dochodzi do skutku.
Kamil Pietrzak
z cURL nie korzystalem
kiedys zaczalem cos czytac, szybko wylaczylem artykul, ale tam na samym poczatku byla informacja, ze trzeba ustawic naglowek i ten naglowek wygladal jak zwykly zwracany przez przegladarke internetowa - ten z informacja o przegladarce, wersja, nazwa jej silnika, systemie etc.
wpisz w google "php rozpoznawanie przegladarki", wejdz przegladarka na strone z tym skryptem i skopiuj to co masz u siebie - swoj naglowek
kapuch
http://www.youtube.com/watch?v=XcgQUsorF_8
Tu masz tutka jak logowac sie przez curla - sam kiedys z tego tutoriala korzystalem i dzialalo.
Jesli nie dasz sam rady, to jutro poszukam gotowego skryptu u siebie - jak nie zapomne.

EDIT: Niestety strona z opisu pod filmikiem juz nie dziala, takze jednak bede musial ci ten skrypt podeslac.
Chyba ze dasz rade z filmu przepisac biggrin.gif:D:D

EDIT2:
Zgodnie z tym co obiecalem, wklejam skrypt (mimo ze autor juz sobie dal rade, ale przyda sie dla potomnych):
  1. function curl_login($url,$data,$proxy,$proxystatus){
  2. $fp = fopen("cookie.txt", "w");
  3. fclose($fp);
  4. $login = curl_init();
  5. curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
  6. curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt");
  7. curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  8. curl_setopt($login, CURLOPT_TIMEOUT, 40);
  9. curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
  10. if ($proxystatus == 'on') {
  11. curl_setopt($login, CURLOPT_SSL_VERIFYHOST, FALSE);
  12. curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, TRUE);
  13. curl_setopt($login, CURLOPT_PROXY, $proxy);
  14. }
  15. curl_setopt($login, CURLOPT_URL, $url);
  16. curl_setopt($login, CURLOPT_HEADER, TRUE);
  17. curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  18. curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
  19. curl_setopt($login, CURLOPT_POST, TRUE);
  20. curl_setopt($login, CURLOPT_POSTFIELDS, $data);
  21. ob_start(); // prevent any output
  22. return curl_exec ($login); // execute the curl command
  23. ob_end_clean(); // stop preventing output
  24. curl_close ($login);
  25. unset($login);
  26. }
  27.  
  28. function curl_grab_page($site,$proxy,$proxystatus){
  29. $ch = curl_init();
  30. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  31. if ($proxystatus == 'on') {
  32. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  33. curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
  34. curl_setopt($ch, CURLOPT_PROXY, $proxy);
  35. }
  36. curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
  37. curl_setopt($ch, CURLOPT_URL, $site);
  38. ob_start(); // prevent any output
  39. return curl_exec ($ch); // execute the curl command
  40. ob_end_clean(); // stop preventing output
  41. curl_close ($ch);
  42. }
grzewoj
Dziękuję wszystkim za pomocną dłoń, udało się, skrypt loguje się na stronę gdy wyłączyłem kodowanie loginu i hasła komendą base64_encode(). Teraz kombinuję jak automatycznie wywołać przycisk reset z tej strony, wujek google wkracza do akcji.

Temat zakończony, udało mi się napisać drugi skrypt, dzięki któremu resetuję tylko IP, dzięki temu cała procedura trwa 15 sekund, gdyby ktoś szukał sposobu na to:

  1. $curl = curl_init();
  2. curl_setopt($curl, CURLOPT_URL, "http://IP Routera, zwykle 192.168.1.100/Forms/home_wan_1");
  3. curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  4. curl_setopt($curl, CURLOPT_USERPWD, 'logindoroutera:haslodorutera');
  5. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  6. curl_setopt($curl, CURLOPT_HEADER, 1);
  7. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt($curl, CURLOPT_POST, 1);
  9. curl_setopt($curl, CURLOPT_POSTFIELDS, 'Alwan_VPI=0&Alwan_VCI=35&wanTypeRadio=Two&wan_PPPUsername=logindouslugiDSL&wan_PPPPassword=hasłodousługiDSL&wan_NAT=Enable&wan_VCStatus=1&WAN_DefaultRoute=1');
  10.  
  11. $data = curl_exec($curl);


Oczywiście pola trzeba wypełnić odpowiednimi dla siebie hasłami i loginami

Temat do zamknięcia, za pomoc dziękuję!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.