Report inadequate content

Mac, Trucos in Harecoded

Expand

Autocompletar hosts al escribir ssh en la terminal

Esta mañana mi compañero Borja me ha enseñado un pequeño truquito para olvidarse de los bookmarks en la terminal. Se trata de autocompletar el comando ssh con los hosts conocidos.

De este modo, cuando escribes ssh en la terminal puedes darle al tabulador para que sugiera o escriba el resto de host por ti. Ejemplo:

 -

Existen múltiples maneras de hacer esto, leyendo configs con puertos y otras barbaridades, pero esta es realmente simple y efectiva y sin duda la que más me gusta. Lo que hace es leer el fichero de hosts conocidos (~/.ssh/known_hosts) y sugerirlos en el autocomplete. Por si no recuerdas qué guarda ese fichero son todos aquellos servidores que verificaste a la pregunta tipo:

The authenticity of host 'manolete (172.22.195.142)' can't be established.
RSA key fingerprint is 7d:00:92:5f:c9:2b:c7:f2:37:fc:5e:40:ce:0e:4d:d1.
Are you sure you want to continue connecting (yes/no)?

El comando, que deberías copiar y pegar en tu ~/.bash_profile es este:

complete -W "$(while read line; do echo ${line%%[, ]*}; done \
< ~/.ssh/known_hosts)" ssh

Ojo, esta es la versión de Mac.

A ahorrar tiempo!

Expand

Activar y cambiar los colores de la terminal + Prompt

Ya uses iTerm, Terminal o cualquier otra herramienta en Mac, para ver y tunear los colores de tu terminal basta con editar el fichero ~/.bash_profile e incluir lo siguiente:

export CLICOLOR='true'
export LSCOLORS="gxfxcxdxbxegedabagacad"

Y conseguirás algo parecido a esto: TAGS:

La primera línea activa los colores, la segunda dice qué colores usar. Cuando guardes el fichero y abras de nuevo la terminal ya verás los colores. Si no te gustan siempre puedes poner los tuyos usando esta referencia:

a  black
b  red
c  green
d  brown
e  blue
f  magenta
g  cyan
h  light grey
A  block black (gris oscuro)
B  bold red
C  bold green
D  bold brown (amarillo oiga)
E  bold blue
F  bold magenta
G  bold cyan
H  bold light grey
x  color por defecto

Además, puedes cambiar la apariencia y modificar tu prompt añadiendo a continuación en tu .bash_profile alguna de estas líneas de ejemplo:

# Referencia de variables Prompt:
# \u Username, \h Host, \w Path, tput color definition

# Ejemplo 1:
# export PS1='\[$(tput setaf 3)\]\u@\h:\[$(tput sgr0)$(tput setaf 5)\]\w\[$(tput sgr0)$(tput setaf 2)\] \[$(tput sgr0)\]$ '

#Ejemplo 2:
# export PS1='\[$(tput setaf 7)\]\u@\[$(tput setaf 2)\]\h:\[$(tput sgr0)$(tput setaf 4)\]\w\[$(tput sgr0)\]$ '

#Ejemplo 3, Minimalista (solo path en color):
# export PS1='\[$(tput sgr0)$(tput setaf 4)\]\w\[$(tput sgr0)\]$ '

Descomenta la línea con el export (quitar la almohadilla #) que quieras probar y comenta el resto para ver los distintos ejemplos de prompt. Recuerda que debes volver a abrir la terminal o abrir una pestaña nueva para ver los cambios aplicados si es que los has puesto en bash_profile. Para más comodidad siempre puedes ejecutar los comandos en la terminal y luego al encontrar el perfecto guardarlo en el fichero.

Expand

Conectar por SSH sin password (autenticación de clave pública)

 TAGS:

Esta es una de aquellas cosas que uno hace una y otra vez y al final pierde 10 minutos intentando recordar los comandos o buscando la información.

Para conectar a un servidor remoto por SSH sin usuario ni contraseña todo lo que hace falta es compartir una clave entre cliente y servidor. Los pasos son "mu" sencillos:

  1. Asegurarse que la carpeta .ssh existe en el servidor al que nos queremos conectar
  2. Crear una clave RSA pública en la máquina cliente (la que se conecta):
    ssh-keygen -t rsa
    Cuando se te pida por un password, dale al enter sin poner ninguno (este es el propósito del artículo, sin passwords)
  3. Copiar la clave pública en el servidor:
    scp ~/.ssh/id_rsa.pub usuario@servidor.com:.ssh/authorized_keys2

    Puedes omitir la parte usuario@ si te conectas con el mismo usuario.

Y esto es todo amigos. En la siguiente conexión por SSH ya no se pedirá de nuevo el password.

Importante:

A partir de este momento, si alguien robara la clave pública que has guardado en ~/.ssh/id_rsa tendría acceso completo a tu servidor. Más vale que la protejas bien :)

Si dejas un password en la autenticación RSA puede ser una buena idea desactivar en el servidor el acceso SSH vía login/password y dejar sólo autenticación por clave.

Expand

Comando `tree` para Mac

Existe una utilidad llamada "tree" en Windows y Linux que sirve para ver un listado de directorio en un formato ASCII un poco más agradable a la vista. Si no quieres bajarte los MacPorts para esta pequeña utilidad lo más fácil es crear un script de una línea y enlazarlo en /bin para poder llamarlo directamente.

El comando en cuestión es este:

find . -print | sed -e 's;[^/]*/;|--;g;s;--|; |;g'

Ahora, para utilizarlo a troche y moche basta con pegar su contenido en un fichero en cualquier ubicación. Por ejemplo, en mi carpeta de usuario de scripts (/Users/alombarte/scripts/tree.sh):

#!/bin/bash
find . -print | sed -e 's;[^/]*/;|--;g;s;--|; |;g'

Y entonces, para poder escribir allí donde queramos el comando tree hacemos un enlace simbólico:

sudo ln -s /Users/alombarte/scripts/tree.sh /bin/tree

Un ejemplo de la salida es este:

 

|--a1
| |--a11
| | |--fichero_en_a11.txt
| |--fichero_en_a1.txt
|--a2
| |--a21

Así de simple :)

Expand

Evitar que se abra iTunes al conectar el iPhone o Ipod

Esto es una chorrada, pero si sincronizas tu dispositivo con más de un ordernador y te interesa que al enchufarlo no se abra el iTunes hay que seguir estos sencillos pasos (esto vale para Windows y Mac):

  1. Enchufar el iPhone (o iPod) al ordenador
  2. En el iTunes, en el menú de la derecha, hacer click en el dispositivo
  3. Quitar la marca de la casilla "Sincronizar automáticamente al conectar este iPhone"
  4. Pulsar Aplicar.

y esto es todo! La siguiente vez que lo conectes, no se abrirá iTunes.

iTunes

Expand

"ipconfig /flushdns" para Mac OS X

Desde el lanzamiento de Mac OS X Leopard (de esto ya hace unos cuantos días) que ya no funciona el comando lookupd -flushcache que utilizábamos para invalidar la caché de DNS de Mac.

Este comando, que era el equivalente mac de ipconfig /flushdns de Windows ahora se ejecuta usando:

dscacheutil -flushcache

Lo dejo aquí anotado porqué soy flojo de memoria para este tipo de cosas :)