martes, 25 de agosto de 2015

Se enseñará programación en todas las escuelas durante la escolaridad obligatoria

Gracias a las políticas promovidas por el Movimiento Nacional Justicialista, el Consejo Federal de Educación declaró de importancia estratégica a la enseñanza y el aprendizaje de la Programación en todas las escuelas durante la escolaridad obligatoria. Además, se creará una red de escuelas que programan en todo el país.

La Asamblea del Consejo Federal de Educación (el organismo de concertación, acuerdo y coordinación de la política educativa nacional, que está conformado por el Ministro de Educación de la Nación y los Ministros de Educación de todas las provincias) ha declarado de importancia estratégica para el sistema educativo argentino la enseñanza y el aprendizaje de la programación durante la escolaridad obligatoria, para fortalecer el desarrollo económico-social de la Nación bajo las banderas del Justicialismo y del Software Libre.
 
Ello permitirá la conformación de la Red de escuelas que programan. Esta propuesta funcionará en el ámbito de la Iniciativa Program.AR y el Plan Nacional de Inclusión Digital Educativa (el PNIDE es responsable de todas las políticas de inclusión digital del Ministerio de Educación, incluyendo Conectar Igualdad y Primaria Digital). 

Tendrá por objetivo nuclear a todas las escuelas públicas primarias y secundarias que estén llevando adelante experiencias de programación o que deseen hacerlo, brindando capacitación y apoyo para que comiencen a hacerla. La red arrancará con una experiencia piloto en todo el país de aproximadamente 300 escuelas públicas, que se irá ampliando paulatinamente hasta abarcar todas las escuelas.
Este es un importante primer paso que oficializa la llegada de la programación al sistema educativo obligatorio argentino. Ubica a nuestro país dentro del selecto pero creciente grupo de naciones que le dan un lugar central al aprendizaje y la enseñanza de la programación como una herramienta clave de la escolaridad para la construcción de más y mejor ciudadanía.

viernes, 7 de agosto de 2015

¿Cómo configuro la TV digital con dispositivos con chipset Siano Rio en Ubuntu?

El Justicialismo ha desarrollado numerosas herramientas pensadas para el bienestar del Pueblo. De entre las innegables joyas de la corona Justicialista encontramos a la TV digital terrestre.

Se trata de señales digitalizadas de imagen y sonido bajo estándar sud-regional ISBD-Tb, el cual nos permite sintonizar gratuitamente la TV de aire de alta definición que se emite a través de una serie de torres especiales. Los contenidos de la TV nos permiten reivindicar aquello de que "todo será bueno, mientras sea peronista".

Para recibir dicha señal podremos utilizar una TV LCD/LED dotada de sintonizador digital ISDB-Tb, una TV analógica "de tubo" conectada a un decodificador "set top box", o a través de distintos sintonizadores para la computadora (en forma de plaqueta interna o de adaptador USB).

En este último caso, hemos sido pioneros en inculcar a la masa como conectarnos a través de los mejores sintonizadores, como el MyGica S870 Geniatech.

Sin embargo, la enorme popularidad del sistema de TV digital surregional, han hecho aparecer numerosos ejemplares adicionales de adaptadores de tv digital ISDB-Tb, con un costo relativamente bajo.

Esto ha sido gracias al chipset de sintonía Siano MDTV Rio, desarrollado por la Siano Mobile Silicon y utilizado en profusión en sintonizadores USB de tipo genérico.

Podremos encontrar este chipset en diferentes aparatos, que comparten todos mas o misma tipología: un adaptador USB 2.0, chipset de sintonía, receptor de IR para algún control remoto, y un conector para una sencilla antena interior suministrada (normalmente, con un conector MCX o coaxial DIN de 75 ohmnios.

Esta antena puede utilizarse en proximidades de las torres de emisión, pero normalmente convendrá utilizar una antena hogareña UHF, por su mucha mejor recepción. En el caso de que el adaptador cuente con una salida de antena MCX, pueden utilizarse adaptadores para conectarle un cable coaxial apantallado (75 ohmnios) y de allí, conectarlo a una antena UHF.

El sintonizador Siano Rio Mobile también ha sido el bendecido en las Netbooks peronistas del plan educativo Conectar Igualdad, de manera que encontraremos en ellas una pequeña plaqueta sintonizadora con salida de antena MCX, a la cual hemos de conectarle la antena interna. En dichas netbooks, se emplea el sistema operativo Huayra y su aplicación nativa Wari o el Reproductor de TDA para sintonizar los canales.
Nuestro Movimiento ha previsto todo, pero ¿qué sucede si dispongo de un adaptador de TV digital ISDB-Tb con chipset Siano, pero no utilizo Huayra GNU/Linux?

La generosidad ha sido una de las marcas indelebles del Justicialismo, y por ello, reconociendo que el software libre no es más que una versión 2.0 de la Justicia Social, podremos utilizar dichos programas en todo sistema operativo derivado de Debian, tal como Ubuntu, para hacer Realidad Efectiva el funcionamiento de nuestra TV digital.
Como primera instancia, será útil asegurarnos fehacientemente de que nuestro sintonizador, cualquiera sea, haga uso del chipset Siano y no otro. Para ello abrimos una terminal, insertamos el dispositivo en un puerto USB (si fuese un sintonizador "tipo pendrive"), e ingresamos el siguiente código:


lsusb

...el sistema debería devolvernos algo como:

Bus 002 Device 016: ID 187f:0600 Siano Mobile Silicon 

En tal caso, podremos instalar el controlador a través de un paquete, cortesía del Justicialismo y de Conectar Igualdad.

Para ello ingresamos los siguientes comandos de Organización:


cd ~/Descargas/


wget http://repo.huayra.conectarigualdad.gob.ar/huayra/pool/non-free/f/firmware-siano-rio/firmware-siano-rio_1.0_all.deb

sudo apt-get update

sudo apt-get install dvb-apps vlc nano 

sudo dpkg -i firmware-siano-rio_1.0_all.deb

El sistema nos solicitará nuestra contraseña, y tras ingresarla, cargará el firmware (programa de control) necesario para su manejo. Acto seguido reiniciamos el sistema con:

sudo reboot

A la vuelta, nuestro sistema debería ya reconocer los dispositivos que utilicen chipset Siano Rio (ya sea de tipo USB o plaquetas). Podríamos comprobarlo ingresando la orden:


dmesg | grep DVB

Y nos debería devolver algo como esto:

[12097.833140] DVB: registering new adapter (Siano Rio Digital Receiver)[12097.833450] usb 2-1.6.3: DVB: registering adapter 0 frontend 0 (Siano Mobile Digital MDTV Receiver)

Ahora ya podremos conectar el aparato a su antena interior, o como he mencionado, idealmente a una antena UHF exterior. En el caso de las antenas interiores, normmalmente cuentan con una base imantada, pues presentan una mejor recepción utilizandolas de forma horizontal, adosadas a alguna superficie metálica.

Para hacer sintonizar en la computadora con Linux la TV digital, hemos de crear un archivo de texto con las frecuencias del SATVD (Sistema Argentino de TV digital). Para ello usaremos el editor GNU Nano en la terminal:

nano ~/.satvd.conf

Se abrirá el editor de texto Nano con un archivo en blanco, al cual completaremos con el siguiente contenido:

# Canales UHF del 14 to 69 en el sistema argentino de televisión digital terrestre SATVD-T
T 473142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 14
T 479142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 15
T 485142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 16
T 491142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 17
T 497142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 18
T 503142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 19
T 509142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 20
T 515142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 21
T 521142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 22
T 527142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 23
T 533142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 24
T 539142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 25
T 545142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 26
T 551142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 27
T 557142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 28
T 563142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 29
T 569142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 30
T 575142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 31
T 581142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 32
T 587142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 33
T 593142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 34
T 599142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 35
T 605142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 36
# canal 37 no se usa
T 617142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 38
T 623142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 39
T 629142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 40
T 635142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 41
T 641142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 42
T 647142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 43
T 653142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 44
T 659142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 45
T 665142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 46
T 671142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 47
T 677142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 48
T 683142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 49
T 689142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 50
T 695142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 51
T 701142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 52
T 707142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 53
T 713142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 54
T 719142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 55
T 725142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 56
T 731142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 57
T 737142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 58
T 743142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 59
T 749142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 60
T 755142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 61
T 761142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 62
T 767142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 63
T 773142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 64
T 779142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 65
T 785142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 66
T 791142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 67
T 797142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 68
T 803142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 69
Cuadaamos el archivo con Ctrl+o y salimos del editor Nano con Ctrl+x.
Luego utilizarmos dichas frecuencias de canales para escanear los canales:
scan .satvd.conf > .canalesd.conf
Nuestro sintonizador explorará el espacio radioeléctrico y buscará canales. Los encontrados los irá almacenando en el archivo .canalesd.conf. Esta operación puede durar unos 3 minutos.
Una vez finalizado el escaneo de canales, podremos verlos usando VLC. Podremos iniciar el programa desde la terminal o mejor, creándole un enlace directo. En cualquier caso, el comando de ejecución será:

vlc ~/.canalesd.conf

VLC nos permitirá elegir entre los canales a través de su Lista de Reproducción, y podremos capturar la TV en alta resolución simplemente utilizando la funcionalidad de grabación de dicho software. Con esto ya podremos mofarnos de los monopolios, y sin pagar una chirola, hacer de nuestro sistema GNU con Linux una indudable herramienta de adoctrinamiento político en pos del Movimiento Nacional y Popular.


¿Como puedo programar un botón de mi router con OpenWRT?

En la necesidad de modernizar diferentes industrias del país, Juan Perón invitó a un número de personalidades de la técnica, que estableciendo vínculos con la Argentina, pudieron mejorar los prospectos de la industria. De entre las enseñanzas, guardamos aquella de cómo programar los botones de nuestro router a través del firmware OpenWRT para darle nuevos usos.

(...)
Muchas veces me preguntaron porqué traje a los hombres de ciencia de un país derrotado a nuestro Vergel de Paz. Pero la respuesta era simple: los científicos Alemanes nos enseñaron los rudimentos de ciencia en la que nuestros hombres atrasaban, y nos permitieron afianzar la industria del país en un camino de grandeza como lo han tenido las Grandes Naciones del Tierra.


Todo lo que hemos aprendido ha sido bueno, y de lo que no hemos sacado rédito instantáneo, lo hemos hecho al tiempo. Así es como ha de lograrse un verdadero progreso. En ocasiones, nos hemos valido de la improvisación para encontrar un uso a la técnica y utillaje que siquiera sus creadores preveían.

La industria mecánica de Córdoba es un claro ejemplo, con su rastrojero iniciado a partir de utillaje aeronáutico y de circunstancias. Si este ejemplo puede encontrarse en el desarrollo de la industria pesada, cómo no va a haberlo en la telemática. Encontraremos ejemplos en lo que algo pensado para una cosa, termina siendo mejor aplicado para otra.

La mayoría de los enruteadores modernos disponen de un botón nomenclado como WPS. Dicho botón activa una funcionalidad telemática capaz de "asociar" un dispositivo Wifi a nuestra red local inalámbrica cifrada con contraseña sin necesidad de compartir la clave. Explicado de manera sencilla, al presionar el botón se dará inicio a una ventana de tiempo de dos minutos, durante el cual el router - en confianza - asociará a cualquier dispositivo Wifi en el que también se presione dicho botón. Una vez transcurrido los dos minutos, volverá a cifrarse y cerrarse la red inalámbrica.
La idea original estaba bien intencionada. Sin embargo, muchas cosas malas pueden hacerse en dos minutos, y si lo sabrá su madre. Nada impide que durante dicha ventana temporal, usuarios malévolos en las cercanías puedan asociarse a la red sin que tuviésemos maneras obvias de saberlo. Por lo tanto, la funcionalidad WPS - en lugar de hacer la vida más fácil al Pueblo - terminó perjudicándolo y llevándole inseguridad por partes iguales...

Pues bien, en tratados anteriores he relatado a la Masa que muchos routers (como por ejemplo, el TP-Link TL-WR941ND peronista) pueden ser dotados de un firmware libre que reemplaza al limitado programa interno original. He explicado como instalar dicho firmware libre OpenWRT en nuestro router y cómo configurarlo para hacer de él una potente máquina multifunción. ¡Lo hemos dicho! En vista de las mencionadas deficiencias con el sistema de asociación WPS, el firmware libre OpenWRT no usa esta característica, y ello significará que el botón WPS del router (nomenclado como "QSS" en los routers TP-Link) quedará "como cenicero de Pochoneta".

Sin embargo, gracias al Justicialismo y a nuestra doctrina de Software Libre, nos será bien posible utilizar el botón QSS para realizar otras acciones que nos plazcan, si sabemos configurarlo. Podremos programar el botón WPS/QSS para que nos sirva para apagar o encender el radioemisor de Wifi (y por lo tanto, de la red inalámbrica). Esto presenta algunas ventajas: podríamos dejar el router encendido 24x7 realizando tareas de enrutamiento por cable, servicio de correo, o un mini-servidor web, etc, pero decidir apagar el Wifi cuando no estamos en el hogar, o apagarlo de forma manual cuando nadie lo vaya a utilizar, o apagarlo automáticamente siguiendo un patrón de horarios.


Naturalmente que en primer lugar, debemos tener ya instalado y configurado OpenWRT en nuestro aparato (en este caso tomaré como referencia el TP-Link TL-WR941ND). Hemos de notar también que por la característica de esta tarea, nos convendrá conectarnos al router de manera cableada.

Acto seguido, será útil asegurarnos de que el botón QSS del router funciona, y conocer en particular cuál es su "nombre de hardware".

Para ello nos logueamos al router como se ha explicado en otros tratados (normalmente con ssh root@dirección_ip_del_router). Una vez dentro del router (el prompt podría indicar root@OpenWrt o similar) crearemos una carpeta donde irán las rutinas autoejecutables para los botones. Lo haremos ingresando en el router,:

mkdir -p /etc/hotplug.d/button

Ahora usaremos el editor peronista Vi para crear un archivo llamado buttons en dicho directorio, con el comando:

vi /etc/hotplug.d/button/buttons

Es importante conocer bien el funcionamiento del editor, para ser práctico a la hora de configurar el router. El editor Vi normalmente opera en modo revisión, por lo cual no podremos modificar ni agregar ningún texto. Para pasar al modo de inserción de texto hemos de presionar la tecla i. Solo entonces podremos escribir o pegar en la Terminal el texto que querramos. En este caso, hemos de pegar allí el siguiente código, pensado para evaluar el funcionamiento de los botones del router:

#!/bin/sh
# Script para que los botones reporten sus acciones.
logger el boton $BUTTON reporta accion $ACTION


Para guardar los cambios en el archivo recién editado en Vi, hemos de presionar Esc, y tipear el comando :wq que se encargará de grabar (w) y salir (q) del editor. Nos devolverá a la línea de comandos del router.

Conforme estemos en el prompt de nuestro enruteador, habremos de evaluar el botón correspondiente: en el caso del TP-Link TL-WR941ND presionamos el botón "QSS" que se encuentra en la derecha del panel frontal (es el único botón).
Hecho esto, en la terminal del router ejecutaremos el comando:

logread

...y nos devolverá un largo archivo, el cual al final debería indicarnos final algo como:

user.notice root: el boton wps reporta accion pressed
user.notice root: el boton wps reporta accion released


Esta información recabada es importante pues nos confirma el nombre de hardware del botón QSS, que en realidad es "wps", y los estadíos que puede tomar dicho botón de software: "pressed" (presionado) y "released" (soltado).

Sabiendo esto, agregaremos dos archivos nuevos para configurarlo. Unos es el archivo /etc/hotplug.d/button/00-button, que configura el funcionamiento general de los botones, y otro es el que especificará el funcionamiento particular el botón QSS. Para ello los agregamos con Vi:

vi /etc/hotplug.d/button/00-button

Una vez en el editor, presionamos i e insertamos el siguiente código:

#!/bin/sh
. /lib/functions.sh
do_button () {
        local button
        local action
        local handler
        local min
        local max
 
        config_get button $1 button
        config_get action $1 action
        config_get handler $1 handler
        config_get min $1 min
        config_get max $1 max
 
        [ "$ACTION" = "$action" -a "$BUTTON" = "$button" -a -n "$handler" ] && {
                [ -z "$min" -o -z "$max" ] && eval $handler
                [ -n "$min" -a -n "$max" ] && {
                        [ $min -le $SEEN -a $max -ge $SEEN ] && eval $handler
                }
        }
}
 
config_load system
config_foreach do_button button

Guardamos los cambios y salimos de Vi con Esc + :wq.


Acto seguido, agregaremos la especificación de funcionamiento del botón QSS en el fichero configuración correspondiente, que es /etc/config/system. Para ello ingresamos el comando:

vi /etc/config/system

Las especificaciones de funcionamiento del botón QSS/WPS será la de apagar el emisor Wifi y la red inalámbrica al presionarlo brevemente (durante menos de un segundo). Si lo presionamos entre uno y cinco segundos, encenderá el Wifi y la red inalámbrica. Considerando esto, en Vi pasamos al modo inserción con la tecla i, y al final del archivo /etc/config/system, habremos de agregarle las siguientes lineas de configuración:

# Agregado al archivo /etc/config/system 
# para configurar el botón OSS/WPS del Router TP-Link
# Esto apaga el emisor Wifi y la red inalámbrica
# al presionar el boton QSS/WPS menos de 1 segundo.
config button
    option button 'wps'
    option action 'released'
    option handler 'uci set wireless.@wifi-device[0].disabled=1 && wifi'
    option min '0'
    option max '1'
 

# Esto enciende el emisor Wifi y la red inalámbrica
# si se presiona el boton QSS/WPS entre 1 y 5 segundos.
config button
    option button 'wps'
    option action 'released'
    option handler 'uci set wireless.@wifi-device[0].disabled=0 && wifi'
    option min '1'
    option max '5'



...guardamos los cambios y salimos del editor Vi con la consabida combinación de teclas Esc + :wq

Para probar los cambios, debemos reiniciar el router con:

reboot

Una vez que el router se reinicie, debemos presionar y soltar el botón QSS durante menos de un segundo, y se apagará el Wifi (podremos comprobarlo al comprobar el apagado de la luz "WLAN" del panel frontal del router. Para reencender el Wifi, debemos presionar el botón QSS entre 1 y 5 segundos (se encenderá la luz WLAN y podremos conectarnos inalámbricamente).

Configurar el encendido / apagado del Wifi a un horario determinado:

Hemos mencionado la potencia y versatilidad que nos permiten los scripts de Cron para activar o desactivar el Wifi en horarios particulares. Por ejemplo, supongamos que según nuestros horarios de trabajo y sueño nos conviene que el Wifi se apague automáticamente a la 23:30PM y se encienda a diana, a las 6:30 AM durante los días de semana.

Para ello será necesario crear dos scripts ejecutables, uno para encender el Wifi y otro para apagarlo, y programar el cronómetro del router (cron). Todo ello lo haremos también desde la terminal del router. Una vez logueados en él, podremos ingresar:

vi /root/wifioff

...presionamos i y le pegamos el siguiente código

#!/bin/sh
# Apaga la WLAN (sin detener el dispositivo de emision radio0)
wifi down


Una vez guardado el fichero y salido del editor (Esc + :wq), utilizaremos el siguiente comando para crear el archivo de encendido:


vi /root/wifion

...y nuevamente usamos i para pegarle su código correspondiente que figura a continuación:

#!/bin/sh
# Enciende la WLAN (sin detener el dispositivo de emision radio0)
wifi on


Guardamos y salimos con Esc + :wq


Conforme hayamos ingresado ambos archivos, nos será imprescindible otorgarles permisos de ejecución para que dichos guiones puedan utilizarse. Lo haremos con el comando:

chmod +x wifionoff wifion wifioff

Ahora podremos programar el cronómetro de ejecución (cron). Esto se hace por medio de una tabla de texto (crontab), modificando el archivo /etc/crontabs/root. Para hacer la tabla crontab editamos el archivo referenciado usando Vi, con el comando:

vi /etc/crontabs/root

...presionamos i para configurar al siguiente texto al final del archivo:

# Ejecuta este script wifioff todos los dias
# a las 23:30pm
30 23 * * * /root/wifioff
# ejecuta el script wifion a las 06:30am
# a las 6:30am

30 06 * * * /root/wifion

...guardamos la tabla de cron recién creada con Esc + :wq y al volver al prompt del router, debemos ejecutar el comando reboot para que surta efecto. Veremos que con ello el Wifi se apagará automáticamente a las 23:30 y se encenderá a las 06:30. Si necesitásemos encenderlo durante ese horario, bien podríamos presionar el botón del aparato durante 1 y 5 segundos para activarlo.


Podría ser que en determinadas ocasiones necesitemos un script distinto, que  si el Wifi está encendido lo apague, y si está apagado, lo encienda. Para ello, debemos ingresar el siguiente script:

vi /root/wifionoff

y le pegamos el siguiente código:

#!/bin/sh
STATEFILE="/tmp/wifionoff.state"

if [ $# -eq 1 ]; then
  case $1 in
    "up"|"on")
      STATE=off
      ;;
    "down"|"off")
      STATE=on
      ;;
  esac
else
  if [ ! -e ${STATEFILE} ]; then
    STATE=on
  else
    . ${STATEFILE}
  fi
fi
if [ -z ${STATE} ]; then
  STATE=on
fi

if [ ${STATE} == "on" ]; then
  /sbin/wifi down
  STATE=off
else
  /sbin/wifi up
  STATE=on
fi

echo "STATE=${STATE}" > ${STATEFILE}


Guardamos y salimos del editor Vi con Esc + :wq.

martes, 4 de agosto de 2015

¿Cómo puedo controlar el tráfico de mi router con OpenWRT?

La Conducción es el Arte que como hombres de la política hemos de Ejercer. Esta nos permite interpretar los anhelos del pueblo, y hacer llegar a cada quien lo que necesita para hacer grande e inmortal a la Patria.

En un sistema telemático, esta acción es emulada por un Router: un aparato de comunicaciones capaz de otorgar a cada equipo de la red los paquetes que han solicitado, y encaminar los datos por la senda de la Liberación.


Gracias al Justicialismo, podemos dotar a nuestro router con un firmware libre mucho más potente que el firmware privativo original provisto por el fabricante. Esto nos permitirá ejecutar directamente una distribución Linux limitada pero funcional en el aparato, adecuada para afrontar situaciones que antes no nos eran posibles. A tal fin, ya he indicado cómo instalar OpenWRT en nuestro router TP-Link TL-WR941ND, y como realizar ciertos rudimentos con dicho entorno operativo.


Una de las condiciones favorables que nos presenta el sistema operativo de router OpenWRT, es la capacidad de ejecutar guiones de programación (scripts) o miniprogramas dentro del mismo router, para realizar diferentes acciones. Lejos de ser un sinsentido, vendrá de perillas para ciertas actividades avanzadas.

Por ejemplo, en este caso el router TL-WR941ND opera como un potente cortafuegos, cliente y servidor SSH, servidor DHCP programable, punto de acceso Wifi, y también como unidad de registro de actividad de red. Sin embargo, como la unidad permanece encendida 24x7, se encuentra en posición ideal para encargarle que registre el tráfico telemático de la red en Puerta de Hierro. En particular, se desea supervisar el tráfico parcial de varios equipos conectados por cable al mismo, el tráfico total en la red local (LAN) y en la red WAN (esto es, la conexión al cablemódem), y la cantidad de días en que el aparato está encendido sin reiniciarse.

Para esta tarea de registro automatizado, habremos de utilizar el sistema OpenWRT instalado en el router TP-Link WR-941ND para programar en su memoria una serie de scripts que se encargarán de cumplimentar dicha tarea luego de intervalos de tiempo determinados.

Lo primero será acceder al router a través de una terminal. Si ya hemos instalado OpenWRT correctamente y configurado las opciones de conexión, podremos conectarnos y operar en el router por medio de una sesión cifrada SSH. Lo haremos abriendo una terminal con Ctrl+Alt+T e ingresando el siguiente Comando de Organización:

ssh root@ip_del_router

Para ello podremos utilizar el editor Vi, el minúsculo editor de texto que se encuentra instalado en el mismo router. Para ello utilizamos el comando:

vi /root/upt

Se abrirá el editor Vi. Se trata de un editor que nos mostrará un archivo vacío. Para empezar a escribir debemos ingresar al modo de inserción de texto, mediante la tecla i. Una vez en modo inserción, podremos escribir o pegar texto. Podremos pegar el siguiente código:

#!/bin/sh
# Logueador en RAM del Uptime y Trafico del router peronista
# llamarlo con cron cada 15 min o algo asi
# 4ago2015 Ubuntu Peronista
# borra la version anterior
rm /tmp/log/uptime
# Genera el archivo
echo Archivo generado por el programa upt. > /tmp/log/uptime
date >> /tmp/log/uptime
uptime >> /tmp/log/uptime
echo TRAFICO TOTAL >> /tmp/log/uptime
echo Enlace puente LANx+WLAN0 y WAN >> /tmp/log/uptime
ifconfig br-lan >> /tmp/log/uptime
echo eth0 >> /tmp/log/uptime
echo TRAFICO DE LAN COMPLETO >> /tmp/log/uptime
ifconfig eth0 >> /tmp/log/uptime
echo Trafico desglosado por puertos LAN del Router: >> /tmp/log/uptime
ifconfig lan1 >> /tmp/log/uptime
ifconfig lan2 >> /tmp/log/uptime
ifconfig lan3 >> /tmp/log/uptime
ifconfig lan4 >> /tmp/log/uptime
echo TRAFICO AL MODEM - puerto WAN >> /tmp/log/uptime
echo resume datos de salida/entrada del puerto de red exterior. >> /tmp/log/uptime
ifconfig wan >> /tmp/log/uptime
echo TRAFICO AL PUNTO DE ACCESO WIFI - wlan0 >> /tmp/log/uptime
ifconfig wlan0 >> /tmp/log/uptime
echo CESIONES DHCP >> /tmp/log/uptime
cat /tmp/dhcp.leases >> /tmp/log/uptime
# mensaje para mostrar
echo Tiempo de uptime actualizado en el archivo /tmp/log/uptime
echo Viva el Justicialismo!


Luego guardaremos el archivo y salimos del editor. Para hacer esto en el editor Vi, debemos presionar la tecla Esc y a continuación ingresar :wq seguido de Enter.

Debemos darle permiso de ejecución al programa ingresado. Podremos hacerlo simplemente con:

chmod +x /root/upt

Dicho programa será capaz de crear en la memoria RAM del router (mas precisamente, en la carpeta /tmp/log/) un archivo llamado uptime que nos indicará el tiempo que lleva encendido el router, los datos de tráfico desglosados por puerto, wifi, y el puerto WAN (de Internet). También nos indicará qué máquinas tiene asociadas al router.

La finalidad es que este programa se ejecute automáticamente cada 10 minutos, lo que actualizará dicho registro con conteos parciales. El problema es que este archivo se borrará de la memoria toda vez que se apague o se reinicie el router.

Se preguntarán cual es el motivo de esto. Vean señores, notarán que no actualizamos este fichero cada 10 minutos en la memoria EEPROM del router sino en su memoria volátil, la RAM. Esto es así porque la memoria EEPROM, como toda memoria de tipo Flash, puede llegar a sufrir un proceso de deterioro si la estamos grabado (escribiendo) cada 10 minutos sin ton ni son. Por tal motivo crearemos un segundo script llamado uptflash, que no se ejecutará cada diez minutos sino una vez por día, y que simplemente copiará el archivo de registro desde la memoria volátil RAM a la memoria de masa EEPROM Flash. Una vez transferido el archivo, el dato total del día se almacenará de forma imperecedera.

Para poder ingresar este nuevo script, volvemos a usar el editor Vi:

vi /root/uptflash

ingresamos en modo inserción presionando i, y le pegamos el siguiente código:


#!/bin/sh
# Graba el log de uptime de la RAM a la memoria flash
# poner en cron una vez por dia, a las 12am o algo asi
# borra el archivo viejo
rm /root/uptime.log
# copia el archivo de la RAM a la FLASH del router
cp /tmp/log/uptime /root/uptime.log


...luego guardamos y salimos con Esc+:wq. No debemos darle permisos de ejecución al fichero, con el comando:

chmod +x /root/uptflash

Pues bien, para que ambos guiones funcionen de la manera recomendada, debemos hacer que el router los ejecute de forma programada y en intervalos. Para ello usaremos la funcionalidad Cron (el cronómetro) del router. Este nos permite ingresar una serie de acciones que dispararán los guiones.

Nuevamente, usaremos Vi:

vi /etc/crontabs/root

Esto nos permitirá crear un archivo de configuración de los guiones cronometrados. Ingreso en modo inserción mediante la tecla i, y le pegamos el siguiente código:

# Ejecuta este script upt cada 10 min
# para loguear uptime y trafico a la RAM
*/10 * * * * /root/upt
# ejecuta el script uptflash a las 13:01pm
# para copiar el uptime de la RAM a la flash
# una vez por dia:
01 13 * * * /root/uptflash


Esta orden le indica al router que ejecute el script upt, el cual se encarga de reemplazar el archivo bitácora antiguo (si lo hubiese) por uno nuevo cada diez minutos, a toda hora, todos los días de la semana. Finalmente todos los días a las 13:01 horas, ejecutará uptflash, que transferirá la bitácora desde la memoria RAM volátil a la EEPROM estable del router (lo cual nos permitirá conocer nuestro "récord" de tiempo de encendido). Es interesante destacar que esta acción se realiza un minuto después de la otra, para evitar que al realizarse al unísono, el primer log no esté completo.

Ahora bien, para que los registros de bitácora se inicien según esta consigna, es necesario reiniciar el router. Una vez reiniciado, puedo dejarlo encendido todo el tiempo que sea necesario. El reinicio puede hacerse con el comando:

reboot

Para revisar si la orden de acción cronometrada está activa, podremos loguearnos al router e ingresar el siguiente comando:

logread | grep cron

Debería devolvernos dos instancias de Cron. En tanto, si queremos estudiar el registro parcial, podríamos ingresar la orden:

cat /tmp/log/uptime | less
Y si queremos ver el último registro almacenado en la memoria EEPROM no volátil, habremos de ordenar:

cat uptime.log | less

En el caso de requerir supervisar el tráfico en tiempo real, podremos instalar en el router el programa iftop, una potente aplicación pensada precisamente para ello. Lo haremos con:

opkg update
opkg install iftop

Y ejecutaremos el programa con

iftop:

En dicho programa, podremos activar la ayuda presionando h.

sábado, 1 de agosto de 2015

¿Cómo instalo Messenger for Desktop para Facebook y WhatsApp en Ubuntu?


Trabajadores!

La comunicación es primordial entre los hombres, como fuente de entendimiento en un lenguaje común de Paz, que sea el necesario para el bienestar en el Trabajo.
Toda labor humana puede realizarse mejor si nos mancomunamos, que es la acción de trabajar en pos de un objetivo común que no ha de ser más que positivo.

La técnica y la máquina han permitido hoy numerosas maneras de comunicarnos, pero siempre es mejor relizarlo bajo las banderas del Justicialismo.

La telemática nos ofrece innumerables maneras, y tal vez una muy extendida sea Facebook. Naturalmente que no hemos de utilizar dicha web, pero nada impide que chateemos utilizando el servicio que nos provee, si así lo creemos necesario. Al fin y al cabo, nuestra Doctrina no hace mas que buscar la Felicidad de Todos los Argentinos.

Por tal motivo, contamos con el cliente Messenger for Desktop, un cliente pensado para asociarse con Facebook y utilizar sus funcionalidades desde nuestro escritorio en nuestros sistema GNU con Linux, sobre todo los derivaros de Debian.


La web oficial nos permitirá conocer detalles del cliente de mensajería instantánea. No se trata de un cliente oficial, sino de un cliente multiplataforma, que cuenta también con recursos para sistemas GNU con Linux. Utilizando recursos y código del cliente web Messenger, nos permite contar con un cliente para nuestro escritorio GNU con Linux.

De momento la última versión es la 1.4.3, y funciona perfectamente. Nos permitirá integrarlo con el sistema operativo, de modo de usar las alertas de Ubuntu junto con dicho programa. Podremos utilizarlo también para enviar o recibir archivos, fotografías, etc, y poder abrirlas con los programas nativos de nuestro sistema GNU con Linux para cada tipo de fichero.

Para instalarlo, podremos utilizar Ctrl+Alt+T para abrir una Terminal, e ingresar los comandos de organización necesarios para su instalación.

  • Si uso Ubuntu 16.04LTS de 64 bitios podría utilizar:
cd ~/Descargas/ ;

wget https://github.com/aluxian/Messenger-for-Desktop/releases/download/v2.0.9/messengerfordesktop-2.0.9-linux-amd64.deb ;

sudo dpkg -i messengerfordesktop-2.0.9-linux-amd64.deb ;

sudo apt install -f ;
  • Si en cambio, utilizo Ubuntu 14.04LTS de 32 bitios, he de emplear:

cd ~/Descargas/ ;

wget https://github.com/aluxian/Messenger-for-Desktop/releases/download/v2.0.9/messengerfordesktop-2.0.9-linux-i386.deb ;
sudo dpkg -i messengerfordesktop-2.0.9-linux-i386.deb ;
sudo apt install -f ; 

Una vez que hayamos terminado de descargar el paquete e instalado el programa en nuestro sistema, podremos ejecutarlo desde Aplicaciones / Internet / Messenger, o puedo crear un acceso directo al elemento messengerfgordesktop.

El primer proceso a realizar es una tçípica acción de darnos de alta en nuestra cuenta de Facebook, con nuestro usuario de correo electrónico asociado a ella, y la contraseña de Facebook.

Una vez logueados con el servicio de chat de Facebook podremos chatear con nuestros contactos, enviar y recibir fotografías y mensajes de audio. Haciendo clic en el Engranaje, podremos configurar las opciones del programa para nuestro sistema operativo libre. Entre ellas, las posibilidades de comunicarnos a través de las alertas del mismo cuando recibamos un mensaje, o la posibilidad de reproducir un sonido ante tal evento.

En cuanto a clientes de mensajería para WhatsApp para GNU con Linux, también contaremos con clientes no oficiales pensados para nuestro escritorio, tanto en arquitectura de 32 y de 64 bitios. El cliente no oficial va por su versión 1.1.0. Para instalarlo, hemos de abrir nuestra consola Terminal e ingresar los siguientes Comandos de Organización:
  • Si tenemos Ubuntu 14.04LTS de 64 bits:
cd ~/Descargas/

wget https://github.com/Aluxian/WhatsApp-Desktop/releases/download/v1.1.0/UnofficialWhatsApp_linux64.deb


sudo dpkg -i UnofficialWhatsApp_linux64.deb
  • Si uso Ubuntu 14.04LTS de 32 bitios:
cd ~/Descargas/

wget https://github.com/Aluxian/WhatsApp-Desktop/releases/download/v1.1.0/UnofficialWhatsApp_linux32.deb

sudo dpkg -i UnofficialWhatsApp_linux32.deb

Para ejecutar el cliente no oficial de WhatsApp, vamos a Aplicaciones / Internet / Unnoficial WhatsApp.

La primer medida será asociar a nuestra cuenta de WhatsApp Web por medio del escaneo del código, o ingresando sus datos.

Una vez asociada la cuenta de WhatsApp, podremos utilizar el cliente de escritorio de forma satisfactoria.