martes, 14 de febrero de 2012

Script para enviar Twitts de manera automática usando Bash y Twidge

Hace un tiempo instalé "Twidge", un cliente Twitter que se utiliza desde el prompt, en este caso lo uso desde Bash, hice un pequeño script que envía Twitts automáticamente leyendo línea a línea un archivo de texto, adosa la línea que está leyendo en ese momento y envía el Twitt.

La configuración de Twidge es sencilla, se debe ejecutar:

twidge setup

Posteriormente arroja un enlace que se debe abrir desde el navegador web, luego, se ingresa el PIN que determine el Twitter oficial de la cuenta donde esté abierta la sesión en el navegador.

Por ahora utilicé tiempos marcados, es decir, defino un valor constante para variar el lapso de tiempo que usa el script para enviar la línea que está leyendo en un determinado momento.

Ejemplo de un archivo de texto:

Mi twitt número 1 es para hacer una prueba de envío
El segundo para asegurar que llegó
El tercero es para no seguir enviando

El script de prueba que hice quedó de la siguiente manera:

#!/bin/bash

TIEMPO=$1
TIEMPO=$((TIEMPO*60))
ARCHIVO=$2
TAM=$(wc -l "$HOME/$ARCHIVO" | cut -d" " -f1)
CONT=1

cat "$HOME/$ARCHIVO" | while read LINEA
do
 echo "$LINEA" > /tmp/twitt.tmp
 twidge update < /tmp/twitt.tmp
 if [ $CONT != $TAM ]; then
  SEG=$(((TIEMPO/CONT)*TAM))
  CONT=$((CONT+1))
  sleep ${SEG}
 fi
done
rm -rf /tmp/twitt.tmp
exit 0

Lo llamé enviaTwitt.sh, asigné los permisos de ejecución y lo guardé en /usr/local/bin/ para ejecutarlo desde cualquier ruta donde esté ubicado en la shell de comando.

Se usa de la siguiente forma:

enviaTwitt.sh 4 archivoDeTexto

Donde el 4 indica el valor constante para la formula del tiempo y archivoDeTexto es el archivo donde tendré guardadas mis líneas de publicación, cada línea con un máximo de 140 caracteres.

sábado, 4 de febrero de 2012

PingüinoVE

Hace un tiempo, se vienen gestando algunas investigaciones y prácticas en base a lo que se denomina Hardware Libre, esto con miras a obtener un producto electrónico con las capacidades de ser programado, utilizado en el área industrial, la domótica, la robótica, entre otras.

Joan Espinoza, ha realizado gran parte de dicho proyecto, es el precursor en Venezuela y lleva la batuta en un grupo que hoy día, se integra de personas particulares, estudiantes, algunos empresarios y gente motivada al desarrollo del software y hardware libre, ya que una de las herramientas que complementa el PingüinoVE, es Linux y algunas aplicaciones como su IDE, que está hecho bajo software libre.

Acá una foto de muestra, la última presentación de placa de PingüinoVE, recientemente me llegó, tenía una versión muy vieja:


Si quieres más información al respecto, puedes visitar la página oficial de PingüinoVE.

jueves, 2 de febrero de 2012

Mezclar 2 archivos en bash

Estuve realizando unas prácticas mezclando 2 archivos de texto, juntar la primera línea de archivoA con la primera línea de archivoB, archivoA tenía en su contenido:

perro
loro
gallo

Mientras que archivoB tenía en su contenido:

come perra harina
come alpiste
come maíz

Entonces el script quedó de la siguiente forma:

#!/bin/bash

ARCHIVO1=$1
ARCHIVO2=$2

TAM1=$(wc -l ${ARCHIVO1} | awk '{print $1}')
TAM2=$(wc -l ${ARCHIVO2} | awk '{print $1}')

if [ ${TAM1} -eq ${TAM2} ]; then
        for i in $(seq 1 ${TAM1})
        do
              ARCHIVOA=$(head -${i} ${ARCHIVO1} | tail -1)
              ARCHIVOB=$(head -${i} ${ARCHIVO2} | tail -1)
              echo "${ARCHIVOA} ${ARCHIVOB}"
        done
else
        echo "Los archivos no tienen la misma cantidad de líneas"
fi

exit 0

Para ejecutar se le otorgan los privilegios de ejecución al script.sh y se corre de la siguiente manera:

./script.sh archivo1 archivo2

Es una manera sencilla de mezclar o relacionar el contenido de 2 archivos línea por línea.