Mi enrutador WRT54G me lo dice a través de su característica de acceso al enrutador local (la interfaz de administración http (s)), y me imagino que se podría hacer algo similar con muchos otros dispositivos. En este caso, la página de entrada da los octetos de la dirección IPv4 en cuatro líneas que contienen esta frase:
class = num maxLength = 3 size = 3 value = 'i 'name =' wan_ipaddr_ N' id = 'wan_ipaddr_ N'
Dónde i es el valor octeto y N es el número de octetos. Este bit de ripios obtiene y lo analiza para mí, cortesía de cygwin:
#! /usr/bin/env perl
use strict;
use warnings 'all';
my($account, $password) = @ARGV;
open QUERY,
"curl --sslv3 --user '$account:$password' https://Linksys/ --silent |"
or die "Failed to connect to router";
my @ipaddr = ('x','x','x','x');
while(<QUERY>) {
$ipaddr[$2] = $1 if /value='(\d+)' name='wan_ipaddr_([0-3])/;
}
close QUERY;
print join('.', @ipaddr);
No hay ninguna garantía de que esto va a funcionar con todas las versiones del firmware del router.
Si su enrutador está configurado para usar http para esta interfaz, suelte la opción --sslv3 rizo, y puede usar notación decimal con puntos para dirigirse al enrutador. Para utilizar https con las opciones de enrollamiento anteriormente, también hice esto:
Se utiliza un navegador obtener certificado autofirmado del router (guardado como Linksys.crt).
añadido a mi CA paquete:
openssl x509 -in Linksys.crt -text >> /usr/ssl/certs/ca-bundle.crt
- Agregado 'Linksys' a mi archivo de hosts (C: \ Windows \ System32 \ drivers \ etc \ hosts en mi caja de Windows 8), como un alias para la dirección del enrutador Si la notación decimal con puntos se da a curl en lugar de este alias, rechaza la conexión a causa de una discrepancia de nombre de sujeto de certificado.
Alternativamente, podría simplemente usar la opción --insecure para eludir la verificación del certificado, lo que probablemente tenga más sentido en estas circunstancias.
+1 para respetar las condiciones de servicio! – RichieHindle
Si no posee el servidor en el que está trabajando, querrá asegurarse de tener acceso a hosts fuera de la red antes de realizar un esfuerzo real en el proyecto. –