Riavvio TP-Link TD-W8970v1 (e simili) senza browser

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

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.