Te refieres a que esté conectado a una red y cambie a otra o a que esté conectado siempre a ambas y utilice una u otra?
Hola Chumpy,
Gracias por contestar.
Me refiero que sea como en windows, yo le pongo al router por ejemplo 3 redes, y que el script se encargue de tener una red operativa, escaneándola mediante pings satisfactorios, y en caso de que fallen los pings, que pase a la segunda red, si la segunda red falla también con los pings, que pase a la tercera, y después de vuelta a la primera.
Pero sólo creo una interfaz "wan", donde automáticamente el script asocia la red activa, ya que para usar una tarjeta wifi usb como cliente, necesito que sólo use una interfaz llamada "wan" como he comentado, es decir, que no use varias interfaces.
Tengo como comentaba el magicconnect.tar, el cual consta de 2 scripts: aap y ssid, expongo los scripts por si ayudan, a ver si podemos aclarar su funcionamiento, ya que de programación ando más bien escaso:
----------------------------------------------------
Script aap:
#!/usr/bin/awk -f
BEGIN {
chan=0;
essid="";
encr=0;
psk2=0;
psk=0;
i=0;
# find interface - start by finding if in sta mode
while( "uci show wireless" | getline) {
if(/mode=sta/) {
split($0,wl,".");
iface=wl[2];
}
}
close("uci show wireless")
"uci get wireless." iface ".device" | getline radio
close("uci get wireless." iface ".device")
"uci -P /var/state get wireless." iface ".ifname" | getline ifname
close("uci -P /var/state get wireless." iface ".ifname")
"uci get ssid.core.keepalive" | getline keepalive
close("uci get ssid.core.keepalive")
system("ifconfig " ifname " up")
for(;
{
while( "iwlist " ifname " scan" | getline ) {
scan[i++]=$0;
}
close("iwlist wlan0 scan")
for (j=0;j<i;j++) {
$0=scan[j];
if ($1 == "Cell" || $1 == EOF ) {
if(chan == 0) continue;
# we're at the end of a record
# process data we have and try to connect
if(psk2 == 1) crypt = "psk2";
else if (psk == 1) crypt ="psk";
else if (encr == 1) crypt = "wep";
else crypt = "none";
psk=0;
psk2=0;
encr=0;
rkey="";
# first we see if we're in blacklist
bl="0"
"uci -q get ssid.black." essid | getline bl
close("uci -q get ssid.black." essid)
if ( bl == "1" ) {
print essid " blacklisted";
continue;
}
# now we get key if we're encrypted
if ( crypt != "none" ) {
"uci -q get ssid.white." essid | getline rkey
close("uci -q get ssid.white." essid)
if ( rkey == "" ) {
print essid " is encrypted and key not in whitelist";
continue;
}
}
system("uci set wireless." radio ".channel=" channel);
system("uci set wireless." iface ".ssid=" essid);
if (crypt == "none") {
system("uci set wireless." iface ".encryption=none");
system("uci -q delete wireless." iface ".key");
}
else {
system("uci set wireless." iface ".key=" rkey);
system("uci set wireless." iface ".encryption=" crypt);
}
system("uci show wireless > /tmp/keepalive");
system("wifi up");
while(system("sleep 60; wget -q -T 30 -O /dev/null " keepalive) == 0) {
# system("ifconfig wlan0 >> /tmp/keepalive")
}
}
else {
# now test for the things we want
# channel
if (/Channel:[0-9]/) {
m=match($0,"Channel");
if (RSTART > 0) {
s=substr($0,m);
n=match(s,/[0-9]+/);
chan=substr(s,n,RLENGTH)}
continue;
}
# we don't need else as we break on successful find
if (/^ *ESSID/) {
m=match($0,"\".*\"");
if (RSTART > 0) essid=substr($0,m+1,RLENGTH-2);
continue;
}
if (/^ *Encryption key:on/) {
encr = 1;
continue;
}
if (/^ *IE: IEEE 802.11i\/WPA2/) {
psk2=1;
continue;
}
if (/^ *IE: WPA /) {
psk=1;
continue;
}
}
}
}
}
----------------------------------------------------
Script ssid:
config ssid black
option "4jwireless" "1"
option "badssid2" "1"
config ssid white
option "goodssid1" "key1"
option "goodssid2" "key2"
config ssid core
option "keepalive" "
http://Your/Web/Based/Magic/Cookie"
------------------------------------------------------------------------------
Aquí explica su funcionamiento (configuración):
https://forum.openwrt.org/viewtopic.php?id=21636Un saludo