#!/usr/bin/expect -f

#(c) 2007 Nuno Rodrigues <nunorodrigues84@gmail.com>

#Esta pequena aplicacao verifica o estado do radio numa AP
#Testado especificamente em APs Cisco Aironet 1100 Series

####Recebe como argumentos:
#HOST

set host [lindex $argv 0]
set password "Mbntcdgb"


#USAGE: Ajudar o utilizador

proc usage {} {
	global argv0
	send_user "ERROR in usage\n$argv0 <AP>\n<AP>: nome no DNS da AP\n"
	exit 2
}

##########################################################################
#######INICIO DO PROGRAMA################
##########################################################################

#Verificar se esta tudo a bater bem
if {$argc < 1} {
	usage
}

#Vamos tirar a verbosidade!

log_user 0

spawn /usr/bin/ssh -o "StrictHostKeyChecking no" root@$host

expect {
	"assword" {
		send "$password\r"
		expect {
			"#" {
				send "show interfaces Dot11Radio 0 stats\r"
				#Neste caso esperar duas coisas:
					#Ta ligado
					#Ta desligado
				expect {
					#O radio ta desligado
					"disabled" {
						send "logout\r"
						expect {
							"closed." {
								send_user "$host: Radio interface is DOWN\n"
							exit 2
							}
						}
					}
					#O radio esta ligado
					"Switching path" {
						send "logout\r"
						expect {
							"closed.\r" {
								send_user "$host: Radio interface UP\n"
								exit 0
							}
						}
					}
				}
			}
		}
	}
	"No route to host" {
		send_user "Erro: $host esta desligado\n"
		exit 2
	}
	"Name or service not known" {
		send_user "Erro: $host nao existe\n"
		exit 2
	}
}

