Il mio 8970 sta facendo vecchio e ogni tanto, soprattutto quando sta acceso per diversi giorni, il WiFi si inceppa. Siccome sono un tirchio bastardo ho deciso che riavviarlo una volta al giorno avrebbe risolto il mio problema; peccato che la sua interfaccia web fa molti controlli sulle richieste e questo complica leggermente lo scripting.
Niente di insuperabile comunque. Vi lascio qui sotto un breve programmino in c# in grado di far partire un reboot sui modelli della famiglia:
using System; using System.IO; using System.Net; using System.Text; namespace RebootRouter2 { class Program { static void Main(string[] args) { var address = "http://192.168.2.1"; var username = "admin"; var password = "admin"; var request = (HttpWebRequest)WebRequest.Create(address + "/cgi?7"); request.CookieContainer = new CookieContainer(); request.CookieContainer.Add(new Uri(address), new Cookie("Authorization", "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(username + ":" + password)))); request.Referer = address; request.Headers["Origin"] = address; var postData = "[ACT_REBOOT#0,0,0,0,0,0#0,0,0,0,0,0]0,0\r\n"; var data = Encoding.ASCII.GetBytes(postData); request.Method = "POST"; request.ContentType = "text/plain"; request.ContentLength = data.Length; using (var stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } var response = (HttpWebResponse)request.GetResponse(); var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); Console.WriteLine(responseString); } } }
E anche uno in bash:
#!/bin/bash ROUTER="http://192.168.2.1" AUTH=$(echo -n "user:pass" | base64) CURL="/usr/bin/curl -s -o /dev/null -w %{http_code} -H 'Referer: $ROUTER' -H 'Origin: $ROUTER' -b 'Authorization=Basic $AUTH' $ROUTER" HTTP_CODE=$(eval $CURL) if [ "$HTTP_CODE" == "200" ]; then HTTP_CODE=$(/usr/bin/printf "[ACT_REBOOT#0,0,0,0,0,0#0,0,0,0,0,0]0,0\r\n" | eval $CURL/cgi?7 --data-binary @-) fi if [ "$HTTP_CODE" == "200" ]; then echo "Reboot request accepted." else echo "Reboot request not accepted. ($HTTP_CODE)" fi