martes, 13 de diciembre de 2016

Experiencias con el Chat de solo texto Profanity

Sí yo sé: Adium y Pidgin son clase!.  Pero mi Mac no es una nave voladora que digamos. Para evitar los peges, he optado por sacar lo superfluo, entre ellos Adium.

Y es que en mi trabajo usamos un chat XMPP con el que intercambiamos texto, aunque raramente smiles y aun mas raramente documentos y menos fotos y otras multimedia. Tampoco usamos otros protocolos como gogle chat, skype, messenger o que se yo que mas que el Adium soporte.

La verdad que para ese rudimentario intercambio de texto esta el Adium no solo sobrados, sino que tambien, infrautilizado.

Por esto, decidí ponerme a buscar algo mas liviano y encontré a Profanity. Un cliente xmpp en modo consola, liviano y multiplataforma del cual quede enamorado a primera vista.

Como cualquier aplicacion de consola, hay que escribir comandos, recordarlos y saber usarlos. Por esto, y para que no se me olviden los útiles he decidido escribir un Post, con la esperanza de reutilizar el conocimiento y con que quizas tambien a otros le sirva.


Buscar ayuda:
/help   <<----- ensena una clasificacion de los comandos segun tema
/help commands <<------- ensena todos los comandos
/help comandoespecifico <<--------- muestra la ayuda para ese comando especifico
/help navegation <<---- tips de navegacion

Interface:
/beep on/off <<----- Activa / desactiva las notificaciones
/history <<--- Activa el historial (como en bash)
/clear <<--- limpiar
/flash on/off <<--- destella cuando hay un mensaje
/intype on/off <<-- dice si alguien tipea

Estatus
/away <<------ Ausente
/xa mensaje <<------ largamente ausente (extended away) con mensaje
/chat << --- disponible para chatear (ansprechbar) 
/online <<--- pone el estatus en verde y lo hace activo (verfugbar)
/dnd <<--- do not disturb, o en otras palabras nojo...
/gone 


Ventanas
/win 3 <<---- se va a la ventana y al chat #3
alt + pgd down/up <<-----  ver mas abajo o arriba de la ventana
F1... Fx <<--- ventanas 1 hasta x

Chats
/close 2 <<--- cierra la ventana 2
/join chatname <<----- entra en chatname
/msg "alguien" hola <<--- manda el mensaje
/autoconnect usuario.muestra@chat.com <<------- conecta automaticamente a usuario.muestra al iniciar
/roster add fulanito@chat.com <<-- agrega a fulanito a tus amigos
/roster remove fulanito@chat.com <<-- lo saca

Control
/quit << salir

/script run nombredelscript <<------
ejecuta un script que debe estar guardado en ~/.local/profanity/scripts y que utiliza los comandos de la consola de profanity como lenguaje. Muy útil para configuraciones previas, para mi por ejemplo me sirvio para unirme a todos los chat al empezar la sesion poniendo en el script "inicio" los siguiente
/join chat1
/join chat2

Archivos de configuracion:
EN MAC, tiene profanity 2 directorios importantes:
~/.config/profanity
...  profrc <<--- tiene casi el mismo contenido de un tema, con algunas variaciones
~/.local/profanity

Los Temas (theme)

son una cosa bien importante como poderosa. Podemos listar los temas disponibles con
/theme list
para cambiarlo basta:
/theme load nombredeltema

los temas disponibles se deben guardar en:
~/.config/profanity/themes
aunque los del systema estan en la instalacion del programa:
/usr/local/cellar/profanity/0.5.0/share/profanity/theme

si no encuentras nada alli, es porque es la carpeta para tus temas y no para los que vienen por defecto.
Se pueden bajar temas desde el git del autor:
https://github.com/boothj5/profanity/tree/master/themes

puedes probarlos con "theme load" y comenzar a editar el que mas te guste.

los colores aceptados son:

white bold_white black bold_black
yellow bold_yellow bold_green green blue bold_blue red bold_red
cyan bold_cyan magenta bold_magenta
             
el orden es según mi lógica como armonizan mejor










jueves, 1 de diciembre de 2016

instalaciones de paquetes de software con github

desde que existe github existe con él una nueva alternativa para la instalacion de software que debemos manejar exactamente bien como en el caso de yum, apt-get, aptitude y demas.

la instalacion con github tiene la ventaja de no sobreescribir todos los paquetes sino que analiza primero las alternativas.

Esto puede ser util cuando trabajamos con un software de codigo abierto que editamos a nuestro gusto y del cual queremos editar solamente los archivos que nosotros no editamos.

Basicamente el comando git, copia o "Clona"  el contenido del repositorio Web de Github en nuestra computadora objeto.

El siguiente comando clonará el depositorio de cowsay en un directorio llamado "cowsay" en el directorio activo donde nos encontremos para

git clone git://github.com/schacon/cowsay

El resto dependerá de la forma en que este software se instale, para el caso de cowsay, se ejecuta despues un script install.sh y ya.

Un articulo mucho mas extenso sobre el tema, el cual inspiró este minihow, se puede encontrar en

https://www.lifewire.com/installing-software-using-git-3993572


jueves, 20 de octubre de 2016

el comando find

el comando find se diferencia del comando grep en que el primero busca ficheros en el directorio mientras que el segundo busca cadenas de texto dentro de archivos

find puede encontrar directorios o archivos con la opcion
-type d
-type f

. significa directorio activo
/ significa directorio raiz
y por supuesto todas sus variantes como /home/desktop/etcymas

-name archivo.txt

pero tambien sirvern aqui los comodines o wildcards *

tambien tenemos la opcion ignora el nombre para
-iname archivo.txt
donde find no va a encontrar este nombre

con los comodines entonces podemos encontrar todos los archivos de scripts de pyton ignorando los que pertenecen a test asi:

find / -type f -name *.py -iname test*.py

find tambien nos permite encontrar segun permisos

find . -perm 777 -print
./logfile.001

Virtualizacion con KVM

No voy a discutir porque KVM y no XEN o VMWare. He tenido que usar KVM!

La interfaz me ha parecido espartana como un kernel solitario de linux en su version mas primitiva.

No es tan verdad, puesto que kvm cuenta con un interprete de comando llamado virsh que es bastante poderoso.

Pero cuando te acostumbras al clickliclicki con XEN o VMWare, y tienes que usar KVM te parece un viaje en la historia al pasado.

El manejo de KVM es casi obligatorio a traves de ssh y la consola virsh, porque el unico manager con interface para clientes corre solo en linux de manera nativa. Pero tampoco es tan malo: con una maquina virtual local se puede installar un linux rudimentario que corra puro virt-manager en windows, y en mac hay algunas recetas para brew que con sudor sangre y lagrimas funcionaran despues de algunos dias :-)

La instalacion en Ubuntu es mas o menos asi

sudo apt install qemu-kvm libvirt-bin
 
sudo apt install virtinst


el usuario que va a trabajar con libvirtd debe pertenecer al grupo, para saber si esta
bastara

groups username

si libvirtd no esta en la lista deberemos agregarlo con:

sudo adduser username libvirtd
 

Otra Guia mas de grep

bueno, no quiero reinventar el fuego: esta guia la he escrito para mi mismo aunque si a alguien le sirve me agradará saberlo!

Grep es un comando Unix que sirve para buscar cadenas de texto en archivos.

basicamente funciona así:

grep cadenaabuscar archivoendondesebusca

si la cadena es larga y contiene espacios se puede usar ' ':

grep 'cadena a buscar' archivoendondebusca

si queremos que grep nos diga solo las linias que empiezan con una cadena:

grep '^cadena con la que debe iniciar la linia' archivo.txt

si queremos que a grep no le importen las mayusculas o las minusculas usamos -i

grep -i CadenAaBuscar archivo.txt

si queremos que grep busque una palabra en cualquier lugar de la linea usamos $

grep 'palabra$' archivo.txt

se diferencia de

grep 'palabra' archivo.txt  --> en que este segundo comando buscará la palabra aunque este metida en otra palabra asi: parangacutitidimicuaropalabraparangacutitidimicuaro

si queremos que grep nos ensene las liniea donde NO ESTA una cadena usaremos -vi

grep -vi 'cadenaquenoquiero' archivo.txt

tambien podemos decirle a grep que busque en un grupo de archivos cuyo nombre empieza con asi "arch" por ejemplo, asi:

grep 'buscaesto" arch*

y el nos dara un resultado diciendo donde lo encontro y que:

archivo1.txt:buscaestoaqui
archivo2.txt:buscaestoalla

y si solo queremos que grep nos diga en que archivo esta podemos usar -l (list) que ademas podemos combinar con las otras y hacer un -vil

grep -l '3' arch*
archivo1.txt
archivo2.txt

podemos tambien decirle a grep que nos ensene una linea antes o despues de la liniea encontrada con grep -C cuantaslinias -i "cadena" archivo.txt
... cuantaslinias
liniadearriba
cadena
liniadeabajo
... cuantaslinias

claro, con numeros:
grep -C 2 -i "cadena" archivo.txt 

ah, apropósito tambien sirven las comillas dobles "" en lugar de simples ''

tambien podemos decirle a grep que consiga las lineas que contienen caracteres entre una secuencia, como desde el 0 al 5 asi:

grep [0-5] archivo.txt
linea con un 2
linea con un 4
1 linea
3 linea

la linia con un 6 no saldrá

si solo queremos que grep encuentre las lineas que comienzan con estos numeros usamos ^

grep [^0-5] archivo.txt
1 linea
3 linea

 y las otras dos que no comienzan con los numeros de las secuencia buscada no saldran

grep tambien se entiende bien con directorios, asi si estamos en un directorio que contiene otro llamado "carpeta" podemos decirle a grep

grep 'cadena' carpeta/*

y si queremos una busqueda recursiva (que incluya subcarpetas) podemos usar -r

grep -r cadena carpeta/*

la opcion -n nos permitira ver el numero de línia donde esta la cadena

~\> grep -n [0-3] test.txt
2:testing 1
3:Testing 2
4:TesT 3


Uno muy útil, mostrar el contenido de un fichero omitiendo las linieas comentadas. Por ejemplo para apache.conf etc:

grep -v ^# autofs.conf 

quitar las lineas vacias:

grep .  archivo.txt

y quitar las linias comentadas y las vacias:


grep -v ^# archivo.txt | grep . 

comparar dos ficheros: mejor que grep en este caso te recomiendo sdiff (super-diferencias, en realidad sidebysidediff) que te muestra los resultados ordenadamente en una tablita...

sdiff archivo1.txt archivo2.txt

aparte de sdiff tambien existe un diff, un poco mas primitivo que el primero, aunque en algunos casos podria ser útil, la sintaxis es la misma



Aqui una tablita util de opciones de grep:

Option Beschreibung
-r Setze die Suche rekursiv durch alle Unterverzeichnisse fort. Funktioniert nur bei
der Verwendung von Wildcards einwandfrei
-c Anzeige der Anzahl Zeilen, in denen das Muster gefunden wurde
-i Groß- und Kleinschreibung werden nicht unterschieden
-l Nur Anzeige der Namen der Dateien, in denen das Muster gefunden wurde
-n Zeigt die Zeilennummer an, in der das Muster gefunden wurde
-s Unterdrückt die Fehlerausgaben (Standardfehler); sinnvoll in Skripten
-v Zeigt alle Zeilen an, die das Muster nicht enthalten
-w Das Suchmuster muss ein einzelnes Wort sein (also kein Bestandteil eines anderen Wortes)
-A [n] Zeigt »n« Zeilen an, die der Zeile mit dem Muster folgen
-B [n] Zeigt »n« Zeilen an, die vor der Zeile mit dem Muster liegen
--color=auto Hebt das gesuchte Muster farblich hervor

esta tablita me la tome de:
http://www.prontosystems.org/tux/grep

Crear una script condicional usando grep:

#!/bin/bash
# Script que comprueba la existencia de un Driver
# en conjuncion con Munki se puede usar para instalar el mismo si no esta
if kextstat | grep -q "com.asix.driver.ax88179-178a";
then
    # Driver vorhanden
    touch /Users/Shared/found_kesing_driv.txt
    exit 1
else
    # Driver existiert NIX
    touch /Users/Shared/NOT-found_kesing_driv.txt
    exit 0
fi


 si deseamos que el script funcione a la inversa entonces agregamos ! despues de if
 la "q" sirve para que grep no nos devuelva las lineas donde encontró algo. Ideal para Scripts.





LibreOffice remplaza dos guiones por uno

a veces cuando tengo que escribir un documento sobre el shell o con mezclas de ingles o aleman, el corrector automatico de LibreOffice me molesta: corrige por ejemplo el comando

virsh list --all

en este otro: virsh list -all
que por supuesto no es para nada lo mismo,.

Para quitarlo debes ir al menu --> format --> autocorrect --> options

y ver lo que queremos configurar "mientras tipeas" o "

Tambien se puede desactivar la autocorreccion "while typing"

las opciones tambien puedes ser una opcion... aunque para mi problema con dos -- que se convierten en uno, habia un "hack" especial:

menu --> format --> autocorrect --> option --> replace dashes

Creando secuencias con Shell, seq , echo, jot...

seq puede crear secuencias numericas crecientes y decrecientes con diferentes intervalos, la forma mas simple seria:
seq 5
1
2
3
4
5
si queremos la secuencia decreciente
seq 5 1
5
4
3
2
1
si queremos rellenos con ceros
seq -w 5 1
5
4
3
2
1
¡no pasó nada! -- noo, si pasa, pero aqui no hay ceros que rellenar, prueba
seq -w 10 1
o
seq -w 100 1           ó tambien            seq -w 100
y aqui el último numero de la secuencia será 001

ahora los intervalos...
los intervalos standard son de unidad. Si queremos intervalos diferentes tenemos que definir el inicio, intervalo y fin, asi:

seq 1 0.5 10

o decreciente con
seq 10 0.5 1
aha! aqui seq no hace nada y nos dice:
seq: needs negative decrement
que es absolutamente lógico pues le estamos pidiendo a seq que nos haga una secuencia decremental, y seq sólo suma el intervalo, por lo que tenemos que darle a seq un intervalo negativo, asi

seq 10 -0.5 1 si nos funcionará

las opciones -s y -t tambien nos pueden ser muy útiles


seq -s , -t ENDSEQ 10 -0.5 1

10,9.5,9,8.5,8,7.5,7,6.5,6,5.5,5,4.5,4,3.5,3,2.5,2,1.5,1,ENDSEQ

lo que podria servir por ejemplo para rellenar matrices o crear sucesiones.

Y para terminar aun nos queda la opcion -f o "format" que va a definir si los números se presentarán como estandard (%g), exponencial o notacion cientifica(%e), o con punto decimal y 6 posiciones decimales(%f)

prueba seq -f %g con %e y f% y veras estos formatos mas claramente, pero la fuerza de -f no radica exactamente en estos 3 formatos, sino en los formatos adicionales que se pueden crear a traves de estos. Y es que -f tambien puede ser "archivo%02g.txt" o "logfile.%03g" asi

~\> seq -f "logfile.%03g" 5
logfile.001
logfile.002
logfile.003
logfile.004
logfile.005

con lo que podemos usar seq para crear archivos por ejemplo asi:

touch $(seq -f "logfile.%03g" 5)

o para borrarlos, o crear directorios, etc.


SECUENCIAS CON JOT

SECUENCIAS CON ECHO

echo {1..9}
1 2 3 4 5 6 7 8 9

echo {5..1}
 5 4 3 2 1

en este sentido es echo un poco mas poderoso que seq y jot ya que estas secuencias pueden ser tambien alfabeticas, como
echo {a..z}
echo {A..Z}
y reversas:
echo {z..a}      a asi...
pero estas secuencias estaran siempre en la misma linea (a no ser que se acabe la pantalla entonces salta a la siguiente linea), y si quisieramos que los numeros esten uno bajo el otro necesitaremos a xargs asi
echo {1..10} | xargs -n1
cosa que podria parecer molesta depender de un segundo comando para esta opcion, aunque si lo miramos asi
echo {1..9} | xargs -n3
echo {a..y} | xargs -n5
tenemos como resultado unas bonitas matrices

pero la salida de { .. }  la podemos utilizar en Unix de muchas otras maneras mas alla de echo, ya que echo es solo un repetidor que saca cosas por la salida estandar stdout o por otra dirigida con direccionamientos > o pipes

asi podemos directamente crear el efecto de arriba en ~\> seq -f "logfile.%03g" 5
con:
touch logfile.00{1..5} 

crear directorios:
md directorio_{a..z}                 ó sino tambien md              {a..z}_directorio

con XARGS podemos
cambiar derechos de grupos de usuarios en todas las carpetas dentro del directorio listado:


o lo que seria aún mejor, cambiar los derechos de sólo algunos directorios que cumplan con alguna condición como los que comienzen con "a"

ls a* | xargs sudo chgrp wheel

o filtrarlo con find:

find d* -*k-z

miércoles, 5 de octubre de 2016

Instalando Webmin...

Cada vez que tengo que instalarme el Webmin me topo con algunos problemas extranos, que me derivan a la misma solucion: la instalacion alternativa a traves del depositorio.

Como esta solucion siempre funciona, aqui la copio para que la proxima vez no la tenga que buscar demasiado:

Using the Webmin APT repository

If you like to install and update Webmin via APT, edit the /etc/apt/sources.list file on your system and add the line :deb http://download.webmin.com/download/repository sarge contrib
You should also fetch and install my GPG key with which the repository is signed, with the commands :cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
You will now be able to install with the commands :apt-get update
apt-get install webmin
All dependencies should be resolved automatically.


Es la copia textual del manual online en

http://www.webmin.com/deb.html

Borrar winsxs en Windows 2008

En estos tiempos de Discos grandes rapidos y baratos pudiera parecer una tontería, pero siempre hay alguna situacion en la que se puede presentar la necesidad de ganar espacio en el Disco duro de nuestro servidor sin tener que instalar nuevos. Incluso yo diria que es mejor practica, limpiar que simplemente dejar crecer y crecer. Un buen sucio que nos ahorrara unos 15 GB de espacio en Disco y que realmente puede ser poco necesario es el directorio de WINSXS

La finalidad del directorio WINSXS es la de proveer los paquetes de instalacion de Windows en el caso de que deseemos instalar nuevos Roles o Features en nuestro Servidor. Si el servidor ya esta madurito, cumple sus funciones sin problemas y no queremos enconchinarlo, seguramente que estos archivos estan demas. Por otro lado el eliminarlos del Disco no va a significar que nunca mas podamos instalar nuevos roles, sino que podemos ubicar el WINSXS en una carpeta compartida de red donde todos los servidores puedan accederla para sus instalaciones. Si WINSXS tiene 15GB y tenemos 11 Servidores esta reduccion nos estará significando 150GB de espacio, lo que no es poco.

Para eliminar el WINSXS debemos realizar lo siguiente:
1.- Instalar la Feature "Desktop Experience" con "ink Support"
2.- Reiniciar el servidor
3.- Ahora tendremos en las herramientas del sistema, el "limpiador de Disco"
4.- Seleccionar el "Windows update Cleanup"




este update es necesario, pero ya no hay que bajarlo extra sino que viene con  los updates automaticos



Powershell Tipps y tops

las Funciones:

function [<scope:>]<name> [([type]$parameter1[,[type]$parameter2])]{

el scope, normal es local, pero se puede poner "global" para que la funcion trabaje a nivel de sistema

type, pude ser bool, string, etc. Por lo visto se puede obviar en algunos casos

$parameter es el nombre de una variable que funcionara como parametro para la funcion, asi:

funtion global:buscar [([string]$cosaabuscar)]
{}

para que el programa sea mas legible, tambien se pueden poner los parametros con la etiqueta "param" asi:

param([type]$parameter1 [,[type]$parameter2])

Aqui un ejemplo de la especificidad que se puede alcanzar:#

function [<scope:>]<name> [([type]$parameter1[,[type]$parameter2])]{
param([type]$parameter1 [,[type]$parameter2])
dynamicparam {<statement list>}

begin {<statement list>}
process {<statement list>}
end {<statement list>}

}

si un parametro es obligatorio se puede usar el atributo de parametro "mandatory"

function Start-App{
Param(
[parameter(Mandatory=$true)]
[String]$AppName


Powershell tiene tambien otros atributos como por ejemplo:
AllowNull
AllowEmptyString
ValidateCount
ValidateLength
ValidatePattern


MATRICES

Una funcion puede almacenar un Array de la siguiente manera:
function myping {
$compname = $args[0]
$ip = $args[1]
ping $args[0,1]
}


el array args, ejecutara el ping para ip o para computername, pero no para ambos

VALORES LOGICOS

en PS basta que una variable tenga un valor para ser verdadera, asi si hacemos

$var="hola"
if ($var){echo "es verdad"} 

el resultado sera ver en pantalla "es verdad" 

los operadores son un poco extranos, es mejor al empezar hacerse una tabla:

-eq equal
-ne not equal
-lt little
-le little or equal
-gt grande?
-ge grande or equal

se usan como un signo:
 $var -eq 10

otros operadores muy útiles son tambien

en lugar de decir $var = 10, cosa que al final de cuentas tambien es valida 

viernes, 1 de abril de 2016

Ver las conversaciones pasadas del chat por Pidgin para Windows 7

Pidgin guarda sus conversacionen en la siguienter Ruta

C:\Users\<<NombreDeUsuario>>\AppData\Roaming\.purple\logs

Cada conversacion cerrada esta archivada  como html por fechas asi

2016-04-01.085222+0200CET