重启 Virgin SuperHub 的脚本

重启 Virgin SuperHub 的脚本

我目前正在尝试编写一个脚本,当将其设置为 cron 作业时,它将重新启动我的 Virgin SuperHub。

但是,它一直失败并出现以下错误:“/home/ricky/Downloads/Ubuntu/Scripts/SuperHubReboot.pl 第 11 行没有 ID 为“VmRgRebootRestoreDevice”的表单。”

这是我拥有的脚本中的代码(在 Ubuntu 16.04 上使用 WWW:Mechanize):

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;

我检查了路由器门户内的元素,“VmRgRebootRestoreDevice”是重新启动所需页面的正确参考。

有人有使用脚本重启 SuperHub 的经验吗?如果有,你是如何在 Ubuntu / Linux 中让它运行的?

答案1

我不了解 Virgin SuperHub,但我对 perl 的 WWW::Mechanize 有相当多的经验。

我要做的第一件事是检查$mech->dump_forms().的输出dump_forms,将 WWW::Mechanize 找到的所有表单的信息转储到 STDOUT。您可能不会在最终代码中使用它,但它是一种很好的调试辅助工具。

您也可以使用 perl 调试器,而不是将其添加到脚本源中:

  • 使用以下命令启动 perl 调试器perl -d /home/ricky/Downloads/Ubuntu/Scripts/SuperHubReboot.pl

  • 输入c 11运行脚本直到执行第 11 行

  • 然后输入$mech->dump_forms(您可以在 perl 调试器中输入任何 perl 语句以在当前行的上下文中执行它)

  • 检查输出dump_forms:Virgin SuperHub 的网络界面是否真的在登录页面上使用“name”属性,但之后使用“id”属性?

您还可以使用它$mech->form_number($n)来选择适当的表格(注意:WWW::Mechanize 中的表格编号从 1 开始!)。

相关内容