Aquà os pongo una modificación del thinclient que se encuentra en
http://fon.freddy.eu.org/heartbeat/Esta revisión está
depurada y actualizada para que notifique como si tuvieramos una fonera con el último firmware de FON (actualmente 0.7.2-0).
Necesitareis la
fonkey en /etc:
root@kamikaZe:~# wget
http://fon.freddy.eu.org/heartbeat/fonkey -O /etc/fonkey
root@kamikaZe:~# crontab -e
Añadimos esto en el crontab:
0 * * * * /usr/bin/thinclient cron | logger
root@kamikaZe:~# crontab -e
Y creamos el script: /usr/bin/thinclient
root@kamikaZe:~# vi /usr/bin/thinclient
#!/bin/sh
# config paths
ROOTHOME="/tmp"
SSHPATH="/usr/bin/ssh"
KEY="/etc/fonkey"
THINCLIENT="/tmp/.thinclient.sh"
# script and firmware info
THCLVER="1.0"
CHILLVER="1.0-1"
FONREV="0"
FIRMWARE="0.7.2"
DEVICE="fonera"
MODE="$1"
# fon.com info
USER="openwrt"
SERVER="download.fon.com"
PORT="1937"
FONSIG="$SERVER ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA0zJFtj5NtrVsj8+qG0dtPE8WpHHDpTXp5+d3vvtSS7Hx7vYHyrfN/8PBVrrYOgl4dySY65sGtq34EU04VN4a7xQHSKJBunDUSQ/2Xz+eyo53LCVeFy1zNRCmB6jrFlJQvl5yviLvXmMtOGxG8Z1dfu4qavfGtBxwtwxKPKuiyhs="
# mac info
if [ ! -z "$3" ]
then
WLMAC="$2"
ETMAC="$3"
else
WLMAC=$(ifconfig ath0 | grep HWaddr | sed -e "s/^.*HWaddr //" | sed -e "s/ //g") >> /dev/null 2>&1
ETMAC=$(ifconfig eth0 | grep HWaddr | sed -e "s/^.*HWaddr //" | sed -e "s/ //g") >> /dev/null 2>&1
fi
export HOME="$ROOTHOME"
check_mac () {
if [ -z "$WLMAC" ] || [ -z "$ETMAC" ]
then
echo "Ooops! Error getting MAC Addresses!"
exit 0
fi
}
check_env () {
[ -d "$ROOTHOME/.ssh" ] || mkdir $ROOTHOME/.ssh
[ -f "$ROOTHOME/.ssh/known_hosts" ] || touch $ROOTHOME/.ssh/known_hosts
[ `grep -c $SERVER $ROOTHOME/.ssh/known_hosts` = "0" ] && echo $FONSIG >> $ROOTHOME/.ssh/known_hosts
}
send_data () {
DATA="mode='$MODE' wlmac='$WLMAC' mac='$ETMAC' fonrev='$FONREV' firmware='$FIRMWARE' chillver='$CHILLVER' thclver='$THCLVER' device='$DEVICE'"
echo $DATA | $SSHPATH -T ${PORT:+ -p $PORT}${KEY:+ -i $KEY} "${USER}@${SERVER}" > $THINCLIENT
echo "sent: $DATA"
}
exec_start_mode () {
check_mac
sleep "$((0x$(head /dev/urandom | hexdump | awk '$2 > 0 {print $2}' | head -n1) % 60 + 60))"
check_env
send_data
exec_check_thinclient
}
exec_cron_mode () {
check_mac
sleep "$((0x$(head /dev/urandom | hexdump | awk '$2 > 0 {print $2}' | head -n1) % 3600))"
check_env
send_data
exec_check_thinclient
}
exec_check_thinclient () {
if [ -f $THINCLIENT ]
then
THINSIZE="$(wc -c < $THINCLIENT)"
if [ $THINSIZE = "0" ]
then
echo "Ooops! $THINCLIENT is empty! No Internet available?"
elif [ $THINSIZE != "33" ]
then
echo "Something is different in $THINCLIENT:"
cat $THINCLIENT
else
echo "$THINCLIENT is the default one, deleted."
rm -f $THINCLIENT
fi
else
echo "Ooops! $THINCLIENT does not exist!"
fi
}
case "$1" in
start)
exec_start_mode
;;
cron)
exec_cron_mode
;;
check)
exec_check_thinclient
;;
*)
echo "Usage: `basename $0` {start|cron|check} [WLMAC ETMAC]"
exit
esac
Le damos permiso de ejecución:
root@kamikaZe:~# chmod +x /usr/bin/thinclient
Creamos
/etc/init.d/thinclient root@kamikaZe:~# vi /etc/init.d/thinclient
con el siguiente contenido:
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=60
start() {
/usr/bin/thinclient start &
}
Le damos permiso de ejecución:
root@kamikaZe:~# chmod +x /etc/init.d/thinclient
Habilitar este script de inicio (esto creará automáticamente /etc/rc.d/S60thinclient):
root@kamikaZe:~# /etc/init.d/thinclient enable
Y reiniciamos la fonera.
root@kamikaZe:~# reboot
----------------------
02/Jul/2007:He añadido la posibilidad de
simular múltiples foneras. Para ello teneis que pasarle la WLMAC y la ETMAC como en el siguiente ejemplo:
/usr/bin/thinclient start
00:18:11:11:11:11 00:18:11:11:11:10Es decir, se le añaden las MAC de la otra Fonera al final como parámetros.
Si no se le indÃcan estos parámetros, cojerá las MAC de la Fonera actual.
Para obtener la WLMAC y ETMAC de nuestras Foneras, lo podemos hacer asÃ:
root@kamikaZe:~# echo "WLMAC:" `ifconfig ath0 | grep HWaddr | sed -e "s/^.*HWaddr //" | sed -e "s/ //g`
root@kamikaZe:~# echo "ETMAC:" `ifconfig eth0 | grep HWaddr | sed -e "s/^.*HWaddr //" | sed -e "s/ //g`
Debeis añadir una lÃnea más en el crontab para cada una de las Foneras indicando su WLMAC y ETMAC, como en el siguiente ejemplo:
0 * * * * /usr/bin/thinclient cron 00:18:11:11:11:11 00:18:11:11:11:10 | logger
Y otra en el /etc/init.d/thinclient:
/usr/bin/thinclient start 00:18:11:11:11:11 00:18:11:11:11:10 &
Saludos.