Skript zum Neustart von Virgin SuperHub

414
Monstar316

Ich versuche gerade, ein Skript zu schreiben, das meinen Virgin SuperHub neu startet, wenn er als Cron-Job eingerichtet wird.

Es schlägt jedoch mit dem folgenden Fehler fehl: "Es gibt kein Formular mit der ID" VmRgRebootRestoreDevice "um /home/ricky/Downloads/Ubuntu/Scripts/SuperHubReboot.pl Zeile 11."

Dies ist der Code innerhalb des Skripts, das ich habe (mit WWW: Mechanize unter Ubuntu 16.04):

use WWW::Mechanize; my $mech = WWW::Mechanize->new( autocheck => 0); #login $url="http://@ARGV[0]"; $mech->get( $url ); $mech->form_name('VmLogin'); $mech->field("VmLoginUsername","@ARGV[1]"); $mech->field("VmLoginPassword","@ARGV[2]"); $mech->submit_form(); #get settings page and reboot $url = "http://@ARGV[0]/VmRgRebootRestoreDevice.asp"; $mech->get( $url ); $mech->form_id("VmRgRebootRestoreDevice"); $mech->field("VmDeviceRestore",'0'); $mech->field("VmDeviceReboot",'1'); $mech->submit_form(); exit; 

Ich habe die Elemente im Router-Portal überprüft und "VmRgRebootRestoreDevice" ist die richtige Referenz für die Seite, die zum Neustart erforderlich ist.

Hat jemand Erfahrung mit der Verwendung eines Skripts, um den SuperHub neu zu starten? Wenn ja, wie haben Sie es in Ubuntu / Linux zum Laufen gebracht?

0

1 Antwort auf die Frage

1
Jochen Lutz

Ich kenne den Virgin SuperHub nicht, aber ich habe ziemlich viel Erfahrung mit WWW :: Mechanize von Perl.

Als erstes würde ich die Ausgabe von überprüfen $mech->dump_forms(). dump_formsDump-Informationen zu allen Formularen, die von WWW :: Mechanize in STDOUT gefunden werden. Dies ist etwas, was Sie wahrscheinlich nicht in den endgültigen Code eingeben würden, aber es ist eine großartige Hilfe zur Fehlersuche.

Anstatt es der Quelle Ihres Skripts hinzuzufügen, können Sie auch den Perl-Debugger verwenden:

  • Starten Sie den Perl-Debugger mit perl -d /home/ricky/Downloads/Ubuntu/Scripts/SuperHubReboot.pl

  • Geben Sie ein c 11, um das Skript auszuführen, bevor Sie Zeile 11 ausführen

  • Dann geben $mech->dump_formsSie ein (Sie können eine beliebige Perl-Anweisung in den Perl-Debugger eingeben, um sie im Kontext der aktuellen Zeile auszuführen.)

  • Überprüfen Sie die Ausgabe von dump_forms: Verwendet das Webinterface des Virgin SuperHub wirklich das 'name'-Attribut auf der Anmeldeseite, danach aber ein' id'-Attribut?

Sie können auch $mech->form_number($n)das entsprechende Formular auswählen (Achtung: Die Formularnummerierung in WWW :: Mechanize beginnt bei 1!).

Wohin gibt $ mech-> dump_forms () aus? Entschuldigung, ich habe gerade erst mit WWW :: Mechanize angefangen und bin damit noch nicht ganz vertraut. Monstar316 vor 6 Jahren 0