Algo de código para apagar Pcs Windows desde Linux


En un principio pensé compartir código fuente de los scripts de lo que uso para tal fin, sin embargo, no en todos los ámbitos hay más 30 pcs u se segmenta las direcciones Ips en sub-redes. Así que 
mejor muestro parcialmente código para que se pueda adaptar a su ámbito u necesidad. Claro, ando en un dominio Windows con más de 60 pcs y una clara distribución de ips/pcs vía unidad organizativa y con la limitante de estar pensando en ahorrar energía eléctrica.De por sí esa es la inicial necesidad. .


Ya no tengo Facebook. ¿Algún problema?

Ya merecía hacer este post, no para estimular a que hagan lo mismo , sólo que me han preguntado mucho y en ocasiones se me complicaba decir que cosas técnicas consideré para borrar la cuenta.


En una oportunidad, coloque un post indicando mis razones para no usarlo. Claro, eso fue cuando no lo tenía cuenta en Facebook. Después de ser convencido (no sé como aún) , obtuve mi cuenta. En este post indico las razones por las cuales decidí cerrar la cuenta. Lo veo como un "Round 2" sobre el tema.

Enumero sin orden de atención.


-El deber ser: Muchas de las cosas que posee Facebook pareciera que fueran hechas por robots y no por programadores. Me explico, no haya manera de borra muchos amigos/mensajes/eventos/notificaciones/aplicaciones/etiquetas de forma no engorrosa, la eliminación se hace uno a uno.


-Uso de funciones Legacy en la API: Con cada cambio que uno escucha en FB, se obvia que debe se ver reflejada en la API . Es normal que no siempre se cumpla,pero ya es insólito que FB no tenga una política más dura al momento de hacer aplicaciones, ejemplo, si hay cambio en la API, debería reflejarse incluso en las aplicaciones, eso haría que no existiese tantas aplicaciones sospechosas de spam u de malware.Busque Mario como app a manera de ejemplo.


-Mensajes: Enviar un mensaje de forma privada a una persona no es igual a enviar a varios. Si hacías esto, es posible que añadieras al mensaje, más personas que no haz añadido como amigos. ¿Y que tiene esto de raro? Cuando en tus permisos decías que sólo tus amigos veían tus mensajes, no se cumplía.


-Confusión con Grupos: La opción siempre me gusto porque me recordaba a los foros, pero después de los cambios , uno tenia dos grupos, el viejo y el nuevo, siendo este ultimo más molesto puesto que te añadían sin permiso. 


-Eventos: Si se podía controlar quien de tus amigos te podía invitara a algún evento, porque no se podía controlar que eventos públicos podías ver, además de que si bloqueabas un evento, implicaba que no importaba que amigos iba a ir.


-Aplicaciones no seguras: Existen contadas  aplicaciones que hacen lo mismo y en aquellas que pueden ser demasiadas atractivas, están hechas para obtener  demasiados  permisos del usuario (obtener el correo, la contraseña...) sin que uno pueda quitar; en los casos que se podía quitar, la aplicación no funcionaba bien. 


-Chat: El cambio que más molesta creo que genera es el que tienes que ver a todos los usuarios sin importar si están o no conectados. Una opción muy requerida para quienes usaban muchas listas (como yo)


-Etiquetado: Que molesto pasar 20 días sin revisar Facebok y ya estabas etiquetado en una foto donde no apareces o no te gustaba.


-Teoría del Caos: Todo lo anterior mezclado cada semana.

 Resumo, razones técnicas.




PD: Ningún robot fue lastimado en la realización de este post.
PD2: Ahora me la paso en Google Plus y otros lugares. Revisa http://start.io/angelblade

Chau Dennis Ritchie


La reciprocidad en Twitter no me cuadra

    Desde que tengo Twitter, siempre me ha rodado la idea de donde habrá salido eso de la reciprocidad. Suelo recibir comentarios de "es que no me seguías" u "sigueme pues le hice follow", pero al revisar perfiles , no me cuadra lo que se pregona. Entonces, revisando por este vasto mundo de blogs, leyendo, analizando, pensando, me doy cuenta que la reciprocidad en twitter no es como se se define en 1.0

   A ver, según leo en [1], es referente a la correspondencia mutua de una persona  o cosa con otra. Algo recíproco es aquello que se hace como devolución, compensación o restitución.Es decir que, al dar el follow se obtiene el followback. Eso me lleva a pensar que una cuenta es recíproca si el numero de following es igual al número de followers y quienes están de following son followers a la vez.

   Basado en esto, algunas herramientas que tratan de calcular que tan recíproca es una cuenta están mal diseñadas y sumándole el hecho de que siempre se sigue al menos un cuenta verificada que ,  no siempre esa cuenta concede el followback; por lo que la sensación de reciprocidad se pierde si se analiza de forma literal.

   Luego , esta la otra forma de verlo de que al menos hay un rango u tasa de reciprocidad aceptable en la cual los números de following y followers son parejos pero no iguales.

   En fin, al menos que exista, no creo que alguien sea reciproco al 100% en Twitter. Por lo que, eso de la reciprocidad no me cuadra ni con escuadra.



[1] http://definicion.de/reciprocidad/


PD: Y si ven esta cuenta en Twitter, se pueden dar cuenta, a manera de ejemplo @ReciprocidadVen  

Viendo el progreso en el uso del comando dd


Por una falla de disco causada por un altibajo de voltaje en un disco de 500 GB , se ha corrompido una instalación y me he obligado a rellenar con ceros el disco para ponerlo vacío usando un live cd , he usado dd de la siguiente forma:


# dd if=/dev/zero of=/dev/sda


Sin embargo el uso de 'dd' no es atractiva para un disco de dicha capacidad dado que no indica el progreso. Usando la señal especial USR1 , podemos ver el progreso.

Como requiero el PID del proceso, lo obtendría usando

ps -ef | grep dd


Supongamos que el PID obtenido sea 1337, el progreso lo veríamos así

kill -USR1 1337


Sin embargo, tendría que estar ejecutando en vez en cuando la linea para ver el progreso. Así que haciendo un script sería de la siguiente forma


#!/bin/bash

for ((;;)); do
sleep 15s
kill -USR1 1337
done

#Fin de script


Cada 15 segundos (pudiéndose colocar otros valores) mostraría algo así



(click en la imagen para verla más grande)

Escuchando emisoras de radio con mplayer en consola a través de un proxy


Confieso que a veces trabajar sin música es raro. Y normalmente uso cvlc para escuchar emisoras de radio por internet , pero al estar tras un proxy , resumo el momento con un alias en ~/.bashrc de esta forma alias escuchar='cvlc --http-proxy=$http_proxy' , y solo doy escuchar stream_URL .

Pero en raras ocaciones, pierdo mucho la conexión en algunas emisoras y por ende el streaming con cvlc . Antiguamente usaba mplayer pero para otros tipos de streams. Así que se me ocurrió un script para usarlo y añado el soporte de ctrl+c , puesto que al presionarlo , siempre me quedaba mplayer ejecutándose.

¿Donde esta gfxboot.cfg?

Si andas buscando el archivo de configuración de gfxboot.cfg, te darás cuenta que no esta en una ubicación directa, sino que forma parte de una archivo cpio, un archivo binario que aloja en si mismo una serie de archivos a modo de directorio comprimido.

Este archivo cpio varia en su nombre en algunas distribuciones (En Suse Enterprise esta en /boot/messages y en Mandriva en /boot/gfxmenu por mencionar ejemplos), así que una forma sencilla de ubicar es revisando en el archivo de configuración del Grub la linea gfxmenu. Una linea en comando sería algo así

$ grep gfxmenu /boot/grub/menu.lst
u
$ grep gfxmenu /boot/grub/grub.cfg  


Según que se que use Grub u Grub2 respectivamente.

Supongamos que la ubicación obtenida haya sido /boot/gfxmenu , el paso para extraer el archivo es crear un directorio y extraerlo allí

$ mkdir test ; cd test/ ; cpio -idv < /boot/gfxmenu

Al hacer esto, no sólo obtenemos el archivo en cuestión sino el contenido del archivo cpio.

Si se desea hacer cambios permanentes al archivo gfxboot.cfg debemos hacer lo siguiente dentro del directorio creado

# ls | cpio -o > /boot/gfxmenu

El pesebre geek del blog


Tengo costumbre de bromear un poco con los pesebres cada año y para no perder la costumbre, el de este año no podia ser más geek. El del año pasado esta por este enlace

Forzando a cerrar procesos cuyas conexiones estan en estado CLOSE

En ciertas ocasiones, he tenido que cancelar las conexiones del servicio apt-cacher Debian que se me vuelve cuello de botella al saturar la limitante de uso de las interfaces de red.

Aunque en otra oportunidades lo he usado para cancelar las conexiones en un conocido simulador de router Cisco.

El comando sería algo así

#!/bin/bash
netstat -plant | grep CLOSE | awk {'print $7'} | sed "s/[^0-9]//g" | xargs kill -9

Yaourt y de como me toca actualizar

Desde que me mude a ArchLinux, no he tenido en problemas de aprender cosas nuevas. A raíz de la necesidad de usar paquetes en AUR, he tenido siempre la dificultad de verificar/obtener versiones nuevas tras un proxy. Normalmente, la instalación si me funciona, pero no al momento del chequeo de updates. La cosa a la que me refiero es que no me funciona muchas veces este comando yaourt -Su --aur Según Internet, la variable de entorno es fundamental, pero igual. No me ha funcionado,

Así que me resolví hacer dos scripts para al menos , de forma visual dar con los paquetes desactualizados.

El primero en bash sería algo así


#! /bin/bash

yaourt -Q | grep local | awk 'BEGIN { FS="/"} {print $2 }' | awk '{print $1}' > AUR

Las dos primeras partes busca los paquetes que están instalados y filtra los que fueron de forma local, obteniendo resultados de esta forma


...
local/codecs-all 20071007-4
local/ddcxinfo-arch 0.8-2
local/etherwake 1.09-3
local/go-openoffice.org-es 3.2.1.3-2
...


Pero como lo que requiero es el nombre del paquete, hago un filtro usando como separador el carácter "/" obteniendo algo asi


...
codecs-all 20071007-4
ddcxinfo-arch 0.8-2
etherwake 1.09-3
go-openoffice.org-es 3.2.1.3-2
...


Luego como esta separado el nombre de la versión con un espacio, el nombre seria una columna , awk '{print $1}' me daría sólo esa columna



...
codecs-all
ddcxinfo-arch
etherwake
go-openoffice.org-es
...


AL final decidí guardar el resultado en un archivo, de nombre AUR.


El segundo script en Perl sería para que por cada linea en el archivo AUR me busque en yaourt. Sería algo así

#!/usr/bin/perl
open (ARCH, "AUR");

foreach $linea (&lt;ARCH&gt;) {
chomp($linea);
system("yaourt -Ss ".$linea );
}

close(ARCH);

Al hacer esto , el resultado que se muestra es que el paquete desactualizado aparece marcado en rojo.

He acá mi drama.