Script para Reboot Virgin SuperHub

0

Atualmente, estou tentando escrever um script que reinicialize meu Virgin SuperHub quando configurado como um trabalho cron.

No entanto, continua falhando com o seguinte erro: "Não existe um formulário com o ID" VmRgRebootRestoreDevice "em /home/ricky/Downloads/Ubuntu/Scripts/SuperHubReboot.pl linha 11."

Este é o código dentro do script que eu tenho (usando WWW: Mechanize no 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;

Eu verifiquei os elementos dentro do portal do roteador e "VmRgRebootRestoreDevice" é a referência correta para a página que precisa ir para reinicializar.

Alguém tem alguma experiência de usar um script para reiniciar seu SuperHub? Se sim, como você conseguiu trabalhar no Ubuntu / Linux?

    
por Monstar316 16.11.2017 / 11:52

1 resposta

1

Eu não conheço o Virgin SuperHub, mas tenho bastante experiência com o WWW :: Mechanize do perl.

A primeira coisa que gostaria de fazer é verificar a saída de $mech->dump_forms() . dump_forms despeja informações em todas as formas WWW :: Mechanize find to STDOUT. Isso é algo que você provavelmente não deixaria entrar no código final, mas é uma ótima ajuda de depuração.

Em vez de adicioná-lo ao código-fonte do seu script, você também pode usar o depurador perl:

  • Inicie o depurador perl com perl -d /home/ricky/Downloads/Ubuntu/Scripts/SuperHubReboot.pl

  • Insira c 11 para executar o script até antes de executar a linha 11

  • Em seguida, insira $mech->dump_forms (você poderia inserir qualquer instrução perl no depurador perl para executá-la no contexto da linha atual)

  • Verifique a saída de dump_forms : A interface web do Virgin SuperHub realmente usa o atributo 'nome' na página de login, mas um atributo 'id' depois?

Você também pode usar $mech->form_number($n) para selecionar o formulário apropriado (cuidado: a numeração de formulários em WWW :: Mechanize começa em 1!).

    
por 16.11.2017 / 12:41