Fork me on GitHub

Posts in tag `GNU/Linux'

Atajos a la Vim en Terminator

July 4, 2014

En .config/terminator/config:

[keybindings]
  go_up = <Ctrl><Shift>k
  go_down = <Ctrl><Shift>j
  go_left = <Ctrl><Shift>h
  go_right = <Ctrl><Shift>l

  resize_up = <Ctrl><Shift><Alt>k
  resize_down = <Ctrl><Shift><Alt>j
  resize_left = <Ctrl><Shift><Alt>h
  resize_right = <Ctrl><Shift><Alt>l

  broadcast_group = <Ctrl><Shift>g
  broadcast_all = <Ctrl><Shift>a
  broadcast_off = <Ctrl><Shift>n

GNU/Linux

Variable de ambiente vía SSH

June 3, 2014

Para unos servidores donde tenemos un único usuario quería que se seteara automáticamente el modo vi en la consola sólo cuando yo entraba. No podía ponerlo por defecto en .bashprofile porque el resto de mis compañeros usa el modo emacs. Así que buscando encontré que se pueden pasar variables de ambiente en la conexión ssh y de ese modo identificarme. Para que el server acepte la variable hay que declararla en sshdconfig

AcceptEnv SSH_USER

Luego desde el cliente

client~$ export SSH_USER=xleo
client~$ ssh server -o SendEnv=SSH_USER

Una vez en el servidor

server~$ echo $SSH_USER
xleo

Para hacerlo transparente puse la variable en .bash_profile y en .ssh/config agregué

Host *
    SendEnv SSH_USER

En el .bash_profile del servidor hice

 if [ "$SSH_USER" == "xleo" ]; then
    set -o vi
 fi

GNU/Linux

Conectando la RPi directamente a la netbook

August 30, 2013

Ahora que tengo la cámara para la Raspberry quería salir por ahí a hacer algún que otro timelapse así que para no depender de routers ni conexiones externas las conecté directamente mediante un cable de red. Además la alimentación de la Raspberry la hago con un cable USB y así tampoco dependo de alimentación externa.

Raspberry Pi conectada a la Netbook directo con un cable de red

En ambas compus seteé lo siguiente en /etc/network/interfaces

auto eth0
iface eth0 inet static
    address 192.168.10.249
    netmask 255.255.255.0
    network 192.168.10.255
    broadcast 192.168.10.255
    gateway 192.168.10.1

Sólo que en una de ellas (la netbook) cambié la IP a 192.168.10.248

Raspberry Pi conectada a la Netbook directo con un cable de red

Para ver la cámara en la netbook y así poder ubicarla correctamente antes de comenzar el timelapse hice un par de funciones para Bash. En la Raspberry tengo

camera-server () 
{ 
    PORT=${1:-5001};
    echo "Server on 192.168.10.249:$PORT ..";
    raspivid -w 1024 -h 600 -t 999999 -o - | nc -l -p $PORT
}

En la netbook tengo el cliente que le pasa el streaming a mplayer

camera-client ()
{ 
    PORT=${1:-5001};
    nc 192.168.10.249 $PORT | mplayer -fs -fps 31 -cache 1024 -
}

Luego hice otra funcion en la Raspberry para generar timelapses que de paso me sirve de ayuda memoria

function timelapse ()
{
    W=${1:-1024}
    H=${2:-600}
    TL=$((${3:-5}*1000)) # 5 seconds
    T=$((${4:-7200}*1000)) # 2 hours
    DIR=`date +%s`
    mkdir $DIR
    raspistill --verbose --width $W --height $H \
               --timelapse $TL --timeout $T \
               --output $DIR/%04d.jpg
    ls $DIR/*.jpg > $DIR/images.txt
    mencoder -nosound -ovc lavc \
             -lavcopts vcodec=mpeg4:autoaspect:vbitrate=8000000 \
             -mf type=jpeg:fps=24 mf://@$DIR/images.txt \
             -vf scale=$W:$H -o $DIR/timelapse.avi
    echo "Timelapse saved on $DIR/timelapse.avi"
}

Para generar el video de esta forma se necesitan los paquetes mencoder y ffmpeg

GNU/Linux Raspberry

Función útil para Bash

January 21, 2013

Cuántas veces tuviste que crear un directorio y luego entrar en él? Seguramente muchas. Y el método que usaste es el tradicional?

$ mkdir dir
$ cd dir

Y cuando tenías que crear una estructura más compleja, qué hacías?

$ mkdir dir1
$ mkdir dir1/dir2
$ cd dir1/dir2

Bueno, estas operaciones repetitivas puede resumirse en una función de Bash

mkcd ()
{
    mkdir --parents $1 && cd $1
}

Meté eso en tu .bashrc y listo. De ahora en más economizá :)

$ mkcd dir1/dir2

Incluso funciona con estructuras todavía más complejas

$ mkcd a/{x,y,z}/b

GNU/Linux

Colorear diffs

October 24, 2012

Los diff coloreados son más fáciles de leer. Por suerte hay varias opciones para esto. En Debian existe el paquete colordiff. La forma de uso es simple

$ diff archivo1 archivo2 | colordiff

Si querés paginar tenés que usar less

$ diff archivo1 archivo2 | colordiff | less -R

También podés hacer tu propia versión de colordiff usando Pygments. Simplemente instalá el paquete python-pygments y creá la siguiente función en Bash:

colordiff () 
{ 
    cat - | pygmentize -l diff | less -R
}

Guardá la función en el .bashrc para que esté disponible en cada sesión. El uso es similar al comando colordiff

$ svn diff | colordiff

Otro método para colorear diffs es usar Vim

$ svn diff | view -

Y así para ver diffs en dos columnas

$ view -d archivo1 archivo2

GNU/Linux Software Libre

← Older | Newer →