FONERA+ con ssh (how to)

Activar SSH en la FONERA+
(la idea original es de FrancoFON.FR, solo lo traduje y adapte un poco)



Página original aquí.

Poner un PC Con windows o con Linux (vale una maquina virtual)
Poner a funcionar un Web Server, con Perl, fping y perl-Net-Telnet

Bajar dos ficheros (de FrancoFON.FR)
___ redboot.pl
___ firmware_francofon.bin


Los ficheros están aca
___ http://download.francofon.fr/fonera_plus_ssh/redboot.pl
___ http://download.francofon.fr/fonera_plus_ssh/firmware_francofon.bin


Yo renombré firmware_francofon.bin a f.bin (para simplificar el tipeo)

En el PC poner como ip
___ 192.168.1.254/255.255.0.0

ir a una sesion de shell y poner
___ perl redboot.pl 192.168.1.1

Luego conectar la fonera, el puerto blanco con un cable cruzado al PC.
Encender la Fonera, unos segundos despues, aparecerá la consola de RedBoot.

Escribir
___ ip_address -l 192.168.1.1/24 -h 192.168.1.254

luego escribir paso a paso
___ fis delete image

luego indicar de donde debe buscar el BIN
___ load -r -b 0x80100000 /f.bin -m HTTP -h 192.168.1.254

y luego lo mas importante
___ fis create -b 0x80100000 -l 0x00237040 -f 0xA8040000 -e 0x80040400 -r 0x80040400 image

Si en algun momento aparece un error, empezar el proceso desde cero.

¿ PARA QUE SIRVE ESTO ?
Para poder acceder a la fonera con SSH, para poder ver cuando se reinicia sola (lo hace cuando le da la gana...), para poder poner el firmware FrancoFon que tiene mas opciones muy útiles, para poder trastear un poco con ella y porque es gratis.

Una de las opciones que quiero poner en el firmware es el tema "proxys", en empresas donde tenemos proxys hay que indicar a mano
___ export http_proxy=http://ip.proxy:puerto
___ export ftp_proxy=http://ip.proxy:puerto

Algo de las foneras aún no traen.

EL CODIGO DEL REDBOOT.PL
Para los que les gusta PERL, pongo el código fuente del redboot.pl,
(el código también es de FrancoFON.FR)


#!/usr/bin/perl -w

use Net::Telnet ();

my $host = $ARGV[0] or die "Syntax: $0 \n";

system("while true; do fping -t200 $host && break; done");

my $t = new Net::Telnet (Port => 9000, Timeout => 30);
if(!defined($t)){
print "new Net::Telnet failed\n";
exit(1);
} # if
my $ok;
$ok = $t->errmode("return");
$ok = $t->open($host);
if(!defined($ok)){
print "open('$host') failed\n";
$t->close();
exit(1);
} # if

# == Executing boot script in 1.930 seconds - enter ^C to abort

my $line;
while($line = $t->getline()){
$line =~ s/[\r\n]//;
print "-> $line\n";
if($line =~ m/enter \^C to abort/){
$t->put(chr(3)); # send ^C
print "<- \^C\n";
$t->close();
sleep(1);
system("telnet $host 9000");
exit(0);
} # if
} # while
$t->close();

Comentarios

Entradas populares de este blog

Como ganar al apalabrados, trucos, trampas... y algo mas.

Una semana en la vida de un DBA (aún vivo)...