I wrote a perl script for this. You may need to edit accordingly:
Basically, what it does, is checks for the presence of HW, and if it finds it, will connect to the network, depending on what network it is.
If I'm at home, i set it up statically...
Elsewhere - dhcp......
Code:
#!/usr/bin/perl -w
use Term::ANSIColor;
no warnings;
print "Bringing up interface ra0\:\t\t\t";
$device = `lspci | grep RaLink | awk -F ' ' '{print $6}'`;
if($device =~ /RaLink/){
$module = `lsmod \| grep rt2500 `;
$module =~ s/(rt2500).*/$1/;
chomp $module;
if($module eq "rt2500"){
my $ssid =`iwlist ra0 scanning | grep -i essid | awk -F '"' '{print $2}'`;
$ssid =~ s/ESSID:"(.*)"/$1/;
chomp $ssid;
if($ssid =~ /belkin54b/){&static;&success;}
elsif($ssid =~ /.+/){&dhcp;}
elsif($ssid eq undef){&failed_wireless;}
}
else{
`insmod /lib/modules/2.6.11-1.1369_FC4/extra/rt2500.ko`;
my $ssid = `iwlist ra0 scanning | grep -i essid | awk -F : '{print $2}'`;
$ssid =~ s/ESSID:"(.*)"/$1/;
chomp $ssid;
if($ssid =~ /belkin54b/){&static;&success;}
elsif($ssid =~ /.+/){&dhcp;}
else{&failed_wireless;}
}
}
else{&failed_hw;}
sub success{
print "[ ";
print color ("green"), "OK", color ("reset");
print " ]\n";
}
sub failed_wireless{
print "[ ";
print color ("red"), "FAILED", color ("reset");
print " ]\n";
print "No wireless networks available\n";
}
sub failed_hw{
print "[ ";
print color ("red"), "FAILED", color ("reset");
print " ]\n";
print "No wireless device present\n";
}
sub static{
system("ifconfig eth0 down");
system("ifconfig ra0 down");
system("ifconfig ra0 192.168.2.11 netmask 255.255.255.0 up");
system("route add default gw 192.168.2.1");
system("echo 'nameserver 192.168.2.1' > /etc/resolv.conf");
}
sub failed_dh_aquire{
print "[ ";
print color ("red"), "FAILED", color ("reset");
print " ]\n";
print "Failed to aquire network address via DHCP\n";
}
sub failed_dh_kill{
print "[ ";
print color ("red"), "FAILED", color ("reset");
print " ]\n";
print "Failed to terminate running dhclient process\n";
exit;
}
sub dhcp{
$dhcp_pid = `ps aux | grep dhclient | grep -v grep | awk '{print $2}'`;
$dhcp_pid =~ s/root\s*(\d*).*/$1/;
chomp $dhcp_pid;
if($dhcp_pid){$kill_success = system("kill -9 $dhcp_pid");}
if($kill_success = 0){$dhcp_status = system("dhclient -q ra0");}
else{&failed_dh_kill;}
if($dhcp_status == 0){&success;}
else{&failed_dh_aquire;}
}