Publicacion de problemas informaticos y su resolución en mi vida diaria -trabajo y casa- para mi documentación personal y para quien le sirva. Temas corrientes aqui son: Linux, macOS, Deployement, bash, configuraciones, DHCP, optimización, Samba, Programas, DOSBOX, Comandos de consola, Scripts, Virtualización, DNS,
viernes, 14 de julio de 2017
pequeno razonamiento sobre como utilizar los recursos de thunderbird para el trabajo efectivo
Thunderbird no solo recibe emails. Aparte de otros clientes de email muy aceptados como Outlook o iMail, Thunderbird tiene una infinidad de recursos limitados solamente por nuestros propios conocimientos, ya que por ser OpenSource, podemos hasta "reescribir" el código para adaptarlo a nuestras necesidades.
Esto de reescribir el código es por supuesto una exageracion una porque pocos estamos en la capacidad de hacerlo y dos porque no es necesario porque los recursos que ya tiene son muy grandes y poderosos.
- Carpetas de Busqueda
- Carpetas (IMAP)
- Marcas con estrella (kennzeichnung)
- Palabras clave (schlagworte)
- Filtros rápidos
- Filtros
- Convertir en
-- Cita
-- Nota
- Columnas y Configuracion de Columnas para Carpetas
Ejemplo:
Casi una vez al mes pero irregularmente me llega un email invitandome a una conferencia a la que quiero participar.
Tengo varias reglas para que todos los email del departamento invitador se metan en una carpeta de notificaciones, pero quisiera que exactamente esas invitaciones no se me pasen desapercibidas.
En mi compañia los departamentos escriben nombrandose con corchetes en el asunto. El asunto es un poco variable, aunque he observado que una palabra siempre esta alli. Por esto, genero un filtro que busque dentro de la carpeta DEPTO-CONT la cadena "invitacion" y marque esta con mi palabra clave "citas" y agrege una estrella.
Como en la carpeta hay tambien invitaciones anteriores, entonces pierdo nuevamente un poco el objetivo, con lo que complemento el filtro con "antiguedad en días" y asi le pido que solo marque asi los emails que tienen menos de 60 dias.
Una posibilidad es tambien copiar o mover los emails que cumplen la regla a otra carpeta, llamada por ejemplo "Citas-Actuales". Copiar tiene una desventaja: cada vez que aplicas el filtro a la carpeta copia nuevamente lo mismo. Mover tiene la desventaja de que cuando busques los emails del departamento, los de estas citas no van a estar en esta carpeta. Para que esta repeticion no suceda, puedes agregar el filtro "estatus""no es""marcado", pues como la marca la agrega el filtro al copiar, no volvera a aplicarse el filtro en los emails ya copiados porque al mismo tiempo fueron marcados.
Esta desventaja de mover tambien se puede solventar con una carpeta de busqueda, pues es virtual y puede contener emails que estan en diferentes carpetas.
Ademas de estos recursos estandar de Thunderbird, puedo recomendar los Addons
ColorFolder
RegExSuche
ThemeFontSizeChanger
CalendarTweks
martes, 13 de junio de 2017
Como usar una carpeta compartida en la red para guardar Backups de Time Machine de Apple Mac
Los usuarios Windows, cuentan con Shadows Copy. Si los usuarios Mac guardan en una Carpeta de servidor windows esta funcion estar corriendo "por debajo de la mesa". Si un archivo se pierde o borra, se podrá recuperar del servidor windows, pero solamente con un Cliente windows en el que se haga clic con el boton derecho y luego en Versiones.
Este clic no estará presente en Mac, aunque las versiones estén ahí.
Claro que hay mucho que se puede hacer: Maquinas Virtuales, Servidores de Remote Desktops Services, Exploradores de Archivos especializados, etc. Lamentablemente todo resulta "pañitos calientes" o en IT-Jerga "Worksarounds".
Por otro lado, utilizar una Carpeta de Servidor Windows con SMB no siempre resulta tan facil con mac. Mac no tiene GPOs con las que podamos mandar los perfiles completos al servidor y una sincronizacion no es de mi agrado (pocas veces sabe el usuario que esta sincronizado y que no).
Pero Mac tiene su propia solución, y además que se ve bonita (esto es siempre importante para Mac y sus usuarios) se llama Time Machine o Maquina del Tiempo. En TM puedes ver como en el tiempo tus documentos y toda tu máquina ha pasado por el tiempo y puedes restablecer con una increible facilidad las versiones pasadas.
Claro, tienes que enchufar un disquito externo a tu mac... o también correrá bien (o mejor) si te compras una no tan económica Cápsula del Tiempo, con la que podrás guardar tus Backups por el aire.
Pero si la empresa tiene un grande y poderoso servidor SMB, porque necesitamos unos aparatitos de jugete como las capsulas del tiempo?. Eso se puede preguntar cualquier IT administrador que tenga mas de dos dedos de frente y algunos usuarios con fundamento.
Pues porque no es tan fácil. Lo ideal sería que mac nos permitiera en Time Machine, encontrar las Shares que estan disponibles en la red y que podamos decirle "aqui por favor". Pero esto no es posible. Si bien existe un "hack" bastante elegante y eficiente que nos lo permitirá:
Crea una Imagen de Disco con la aplicación estandard de administracion de Discos. Debe ser HFS-J (journaled) y de crecimiento automatico "parseled bunded" ni mas esta decir que del tamaño adecuado para tus documentos.
Pon esta imagen en tu carpeta de red (Share) y luego montala en el sistema de archivos (simple doble clic)
Ahora manda a Time Machine a usar esta unidad montada con
sudo tmutil setdestination /Volumes/TimeMachineDespues tendrás el problema de montar esta Carpeta de Servidor o Share automaticamente en mac, pues aunque esto parezca evidente, y de echo en un clic en Windows, resulta un dolor de cabeza en mac. Sobre todo, si tus usuarios no son Administradores de su Cliente. Pero esto es tema de otro Blog donde me ocupo de esto.
miércoles, 10 de mayo de 2017
Thunderbird deja todos los documentos anexos en en escritorio de Mac
http://cote.cc/blog/stop-thunderbird-from-littering-your-desktop-with-attachments
Por si el link se pierde, o la pagina, o simplemente necesitas un manual es espanol, lo explico a continuacion:
- Ve a configuracion: Extras --> Configuracion --> Avanzada --> Trabajar la Configuracion (about:config)
- Ahi buscas la clave :
"browser.helperApps.deleteTempFileOnExit" sin comillas, que debe estar presente y configurada como "False".
- Dale doble clic y deberia cambiar a "True", sino haslo manualmente.
y ya esta, con esto Thunderbird borrara todos los archivos temporales dejados al terminar la sesion.
jueves, 4 de mayo de 2017
Identacion para archivos XML sin identacion en TextWrangler
Un problemita que me ocupó mientras trataba de editar archivos de configuracion sin saltos de linea en xml, es justamente que no tienen saltos de linea, es decir que toda la configuración era una sola linea. A pesar de que esto pueda parecer lógico, tambien debe resultar logico que se pueda crear una identacion, ya que cada linia posee un nuevo tag con la forma <> y esto lo puede encontrar un programa.
Entonces por esto me di a la busqueda de una solucion para ello y encontre esta bella solucion:
https://magp.ie/2010/02/15/format-xml-with-textwrangler/
No por copiar, sino porque me desagrada que a veces cuando guardo unos vinculos con buena informacion desaparecen de internet, pongo aqui tambien el contenido de la solución, sin dejar de agredecer a su autor original Eoin Gallagher
-----------------------------------------------------------------------------------------------------------------------
Simple guide
We want to add a UNIX script to TextWrangler so it can format an XML file… to do this, do this…
- Open TextWrangler and open a new text file.
- Copy and paste the code below into this file.
1
2
| #!/bin/shXMLLINT_INDENT=$'\t' xmllint --format --encode utf-8 - |
- Save the file, something like Tidy XML.sh, in the
~/Library/Application Support/TextWrangler/Text Filters/folder. - Now anytime you want to format an XML file, just go to the Text menu and select the Tidy XML.sh script and BOOM, neat tidy XML.

This is an interesting facility to extend an already great text editor, and I will be looking into more cool scripts that can hopefully lessen my daily annoyances.
UPDATED:: Added UTF8 encoding, thanks Rolan.
UPDATED:: Added a post to format PHP code in TextWrangler.
UPDATED:: Updated for TextWrangler version 4.5.8.
---------------------------------------------------------------------------------------------------------------------
miércoles, 12 de abril de 2017
Templates o Plantillas en Libre Office para Mac
En las ayudas estandar de libre office aparece un camino facil de equivocar, puesto que (por lo visto en mac el camino es un poco distinto, hay discrepancias y redundancias)
Primero:
Crear un Documento con las características que deseamos. Luego guardarlo como plantilla con
File --> Templates --> Save as Template ---> MyTemplates --> Set as Default
Esto abrira un cuadro de Dialogo que permitira guardar la plantilla como estandar para los proximos documentos.
Si haz usado un documento existente, con contenido, siempre se abrira el contenido. Cosa que me parece tonta puesto que lo interesante es el formato.
De alguna manera se puede disculpar, puesto que es quizas pensado para que siempre aparezca el mismo titulo, asi como los pie de paginas y otras caracteristicas que son intermedias entre contenido y formato.
Si haz guardado la opcion "set as Default" cada nuevo documento contendrá automaticamente el contenido de esta plantilla incluyendo, contenido y formatos.
CUIDADO:
Si piensas que el Documento abierto lo puedes "save as" y luego escojer "template", hasta allí funcionará, pero luego no estará esta plantilla en "My Templates" ni mucho menos como estandar.
CUIDADO:
Cuida de guardar un Documento vacio con el contenido que deseas como estandar y no un texto en especial, pues aparecerá despues en cada nuevo documento
martes, 31 de enero de 2017
Trabajar con el Disco duro en Unix
Bueno, para mi personalmente el tiempo del ahorro de recursos ya ha pasado. Mi primera computadora fue un 8088 con menos de un Mhz de Taktung mientras que las actuales tienen varios Procesadores con más de 3 GHz. Los servidores siempre estaban mejorcitos. Los programas tambien han mejorado su rendimiento, no todos crecen nada mas. Pero bueno, eso es al final cuestion de gustos y harina de otro costal.
Ver las Particiones de manera bastante explicativa:
df -h
hacer imagenes de disco
dd if=/dev/disco of=/home/desktop/tu_imagen.img --> puede ser que necesitas sudo!
este articulo me gusto:
https://wiki.archlinux.de/title/Image-Erstellung_mit_dd
domingo, 8 de enero de 2017
Controlando el disco duro en linux, detener, dormir, reactivar
Parece ser que por defecto el standby para discos en Linux viene desactivado, que se puede controlar con hdparm y que este control es solo por sesion y hay que hacerlo manual cada vez que se reinicia. En el siguiente blog encontre una solución que tengo que probar y con la que no estoy del todo satisfecho
http://www.tacticalcode.de/2013/01/festplatte-automatisch-in-standby-mit-hdparm-und-udev.html
Pero sigo buscando...
update 10:43
http://blog.is-a-geek.org/festplatten-in-den-standby-modus-versetzen-unter-ubuntu-desktopserver-mit-hd-idle
update 20.01.17
hoy he tenido un poco de tiempo para realizar pruebas. Primero, intenté configurar los discos a través de la herramienta webmin, que es mi favorita para facilitar el mantenimiento linux.
En webmin encontramos un apartado para esto y es;
hardware --> partition and local disks --> idle parameters --> Standby timeout
esto funciona en el momento, pero la configuracion no se guarda, todavia no he mirado porque,
Otra alternativa, hdparm es bastante aceptable, pero hay que configurarla a traves de scripts para que se funcion de manera automatica. Basicamente:
hdparm -C /dev/sda --> te dice el estado actual del sda
hdparm -y /dev/sda --> lo pone en descanso
hdparm -S 10 /dev/sda --> lo pone en descanso en un tiempo estimado
viernes, 6 de enero de 2017
conectarse con un server por ssh usando una llave ida/rsa
Si hemos perdido la clave publica, pero conservamos la privada. Podemos "recrearla" con el comando:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
ACTUALIZACION 14:11:2018
Cuando creamos el par de claves, ssh-keygen nos va a mostrar una salida artistica de la llave que se llama randomart.
Este dibujito, no lo volveremos a ver nunca mas si no lo deseamos específicamente. Una opción sería, habilitar la visualizacion de la llave cuando nos conectamos por ssh con un servidor con la opcion adicional, de forma que el comando total nos queda asi:
ssh root@ssh-server -o VisualHostKey=yes
Con lo que nos mostrará el randomart de la clave que estamos usando para conectarnos.
Pero... y si quisiera usar el randomart para comparar claves, perdidas, danadas o simplemente confundidas?
Bueno, el servidor podría convertir las llaves públicas existentes en el archivo know_host así:
ssh-keygen -lvf ~/.ssh/known_hosts---> ESTO ME GUSTA !!!
y podríamos comparar esta salida con el resultado en nuestro cliente con:
ssh-keygen -lv ---> Y ESTO TAMBIEN :-)
ACTUALIZACION 16.05.2018
Tuve que configurarme un laptop nuevo para acceder a estos servidores desde la casa, pero cuando quise enviar su clave con ssh-copy-id y me pidió la contrasena de administrador que no tenia...
Tanto uso el sistema de llaves para ssh, que en un(os) servidores se me olvidó la contrasena.
Claro, siempre podía logearme en el otro computador, por lo que desde este, importé la clave asi:
- pasar la clave publica .pub al computador que sí permite logearse (sin contrasena, pues tiene clave ssh)
- Ejecutar en consola, dentro del directorio donde esta la clave:
cat id_rsa.pub | ssh root@servidor-obj 'cat >> .ssh/authorized_keys && echo "Key copied"' - este comando manda la salida de cat, al archivo .ssh/authorized_keys de el servidor-obj deseado.
https://victorhckinthefreeworld.com/2016/01/28/transferir-llaves-ssh-de-un-pc-a-otro-en-gnulinux/
*********************************
valido para mac y linux:
ssh-keygen -t rsa -b 4096
-- algunos anaden -f ~/.ssh/id_rsa , si no lo haces, igual el programa preguntará el nombre y el camino del archivo. Si tampoco escribes algo especial, entonces tomará el valor por defecto arriba escrito.
-- también preguntará por una "paraphrase" que es una contraseña adicional para la clave. Personalmente pienso que es muy importante, puesto que si alguien se apropiara de la clave tendría fácil acceso a todos los ámbitos donde la clave funciona. Con una paraphrase tendría también que tener esta para cualquier conexión.
Este comando generara dos claves: id_rsa und id_rsa.pub en el directorio .ssh raiz del usuario.
La .pub es la clave pública, que se copiará en los servidores dentro del archivo "know_host" y la otra es la privada, que debe permanecer secreta en este directorio donde fué generada.
Hasta aqui con la parte cliente. Ahora debemos poner la clave pública entre las claves ssh aceptadas por el servidor. Para esto usaremos ssh-copy-id
ssh-copy-id root@server
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@server's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'user@server'"
and check to make sure that only the key(s) you wanted were added.
-- OJO SOBRE EL USUARIO -- si queremos dar acceso a otro userx al servidor ssh hay que ejecutar:
ssh-copy-id userx@server desde el computador del userx y en su cuenta. Teniendo el userx ya una cuenta en el servidor.
--- NOTA IMPORTANTE ---
Si por alguna razon ssh-copy-id no funcionara, se vale tambien copiar (por ftp/filezilla, scp, ssh-->vim, etc.) la clave .pub del cliente /root/.ssh/id_rsa.pub en el servidor en el archivo "host_allow" /root/.ssh/authorized_keys
jueves, 5 de enero de 2017
Reseteando la contrasena de MariaDB en Linux Devuan (una variante Debian)
He encontrado el origen del problema:
al detener el servicio mysql con service mysql stop, he iniciar en modo seguro con deb-maint. Puedo ver las tablas de los usuarios. Alli aparece lo siguiente;
+-----------+---------------------+---------------------+
| host | user | password |
+-----------+---------------------+---------------------+
| localhost | root | * Blablabla-foobar
| server | root | * *Blablabla-foobar |
| 127.0.0.1 | root | * *Blablabla-foobar |
| ::1 | root | * *Blablabla-foobar |
| localhost | debian-sys-maint | * *Blablabla-foobar |
| % | user01 | |
| % | root | * *Blablabla-foobar |
+-----------+----------------------+---------------------+
el problema esta en el "hostname", para que funcione debes poner el "localhost" asi:
mysql -u root -h localhost -p
Pero mucho cuidado, pues esto no va a funcionar en la misma sesion, incluso tampoco con el mismo servicio, pues el modo seguro tambien se puede ejecutar "sin red" con lo que localhost tampoco funciona!
05.01.17 04:57
Si bien la contrasena de SQL no debería significar un problema grave, ya que es mas que seguro que tenemos la contrasena de root, por experiencia no resulta tan facil. Una cantidad de problemas se derivan de las versiones de SQL como de los systemas operativos que los albergan.
No estoy tratando aqui de competir contra las instrucciones de Oracle o MDB. Sino que documento aqui como resolví mis propios problemas, para tenerlo a mano en caso de volver a necesitarlo y ademas que si a alguien le sirven, me alegra.
service mysql stop
mysqld_safe --skip-grant-tables --skip-networking &
mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.0.28-MariaDB-0+deb8u1 (Debian)
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
ERROR 1131 (42000): You are using MariaDB as an anonymous user and anonymous users are not
Ujum... entonces pruebo toda la session desde el comienzo con root:
service mysql stop
mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
ERROR 1131 (42000): You are using MariaDB as an anonymous user and anonymous users are not allowed to change passwords
???
Parece que tengo un terrible problema...
Bueno, la verdadera razon de ese problema parece residir en la configuracion original de mysql
bastante interesante es que el comando...
mysql_secure_installation
tambien me devuelve ese error:
Enter current password for root (enter for none):
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
lentamente estoy pensando en reinstalar todo, pero antes un par de tips interesantes que también encontré:
1.- hay un usuario debian-sys-maint que tiene privilegios elevados y puede ejecutar y configurar bases de datos, su contrasena es un texto aleatorio guardado en el archivo
/etc/mysql/debian.cnf
con él te puedes logear y resetear contrasenas
2.- Con el usuario debian-sys-maint (quizas también con otro) puedes visualizar los usuarios configurados de mysql.
select host, user, password from mysql.user;
en esta tabla puedes ver "encriptadas" las contrasenas, esto puede ser util a pesar de todo para estar seguro de los nombres de usuario, saber si un usuario con contrasena desconocida/olvidada tiene la misma de uno que conozcamos, o para constatar si nuestro cambio o reseteo de contrasenas esta funcionando.
3.- El comando: update mysql.user set password=password('tu-contrasena') where user='root';
sirve para resetear contrasenas.
martes, 13 de diciembre de 2016
Experiencias con el Chat de solo texto Profanity
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:
whitebold_whiteblackbold_black
yellowbold_yellowbold_greengreenbluebold_blueredbold_red
cyanbold_cyanmagentabold_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
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
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
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
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
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 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...
Using the Webmin APT repository
deb http://download.webmin.com/download/repository sarge contribcd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.ascYou will now be able to install with the commands :apt-get update
apt-get install webminAll dependencies should be resolved automatically.Borrar winsxs en Windows 2008
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"
Powershell Tipps y tops
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 sistematype, 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]$AppNamePowershell tiene tambien otros atributos como por ejemplo:AllowNull
AllowEmptyString
ValidateCount
ValidateLength
ValidatePatternMATRICESUna 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 ambosVALORES LOGICOSen 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 10otros 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
C:\Users\<<NombreDeUsuario>>\AppData\Roaming\.purple\logs
Cada conversacion cerrada esta archivada como html por fechas asi
2016-04-01.085222+0200CET



