Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Automatyczny restart routera Pentagram P6331-42 przy pomocy PHP
grzewoj
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 5.11.2010

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post
Kamil Pietrzak
post
Post #2





Grupa: Zarejestrowani
Postów: 213
Pomógł: 10
Dołączył: 7.01.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


cURL jest tez w PHP
PS: na portalu jest art na ten temat

Ten post edytował Kamil Pietrzak 5.11.2010, 18:53:28
Go to the top of the page
+Quote Post
grzewoj
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 5.11.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Kamil Pietrzak
post
Post #4





Grupa: Zarejestrowani
Postów: 213
Pomógł: 10
Dołączył: 7.01.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
kapuch
post
Post #5





Grupa: Zarejestrowani
Postów: 389
Pomógł: 69
Dołączył: 26.04.2010
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował kapuch 6.11.2010, 12:58:54


--------------------
Nie chce "Pomógł", aktualna ilość (69) w pełni mnie satysfakcjonuje :)
Go to the top of the page
+Quote Post
grzewoj
post
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 5.11.2010

Ostrzeżenie: (0%)
-----


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ę!

Ten post edytował grzewoj 6.11.2010, 13:58:53
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 05:57