Esta pagina se ve mejor con JavaScript habilitado

Urxvt tips II

 ·  🎃 kr0m

Siguiendo con la seria de configuraciones de nuestro emulador de terminal favorito urxvt vamos a explicar como bindear ciertas combinaciones de teclas a ciertas acciones, de este modo tendremos de forma transparente nuestros comandos mas utilizados en todos nuestros servidores.

Este truco nos permitirá disponer de nuestros comandos independientemente del equipo en el que estemos logueados, se puede optar por hacer algún tipo de copia de nuestros alias pero mediante este otro “hack” llegaremos a una solución mas sencilla y elegante.

Según el sistema operativo que utilicemos el path de las extensiones de urxvt estarán en un sitio u otro:

/usr/local/lib/urxvt/perl/kr0m
/usr/lib64/urxvt/perl/kr0m

vi /usr/local/lib/urxvt/perl/kr0m
#! perl
sub on_user_command {
        my ($self, $cmd) = @_;
	if ($cmd eq "kr0m:mysqlSlave" or $cmd eq "kr0m:mysqlRepUsers" or $cmd eq "kr0m:iptables" or $cmd eq "kr0m:ss" or $cmd eq "kr0m:psaux" or $cmd eq "kr0m:icanhazip" or $cmd eq "kr0m:pass" or $cmd eq "kr0m:clearcomments" or $cmd eq "kr0m:disableLsColors") {
                my @command = split /kr0m:/, $cmd;
                my $filename = "/tmp/perlOutput.txt";
                #open my $fh, ">", $filename or die("Could not open file. $!");
                #print $fh $command[1];
                #close $fh;
                if ($command[1] eq "mysqlSlave") {
                        $cmd = "mysql -sre 'show slave status\\G;'\n";
		} elsif ($command[1] eq "mysqlRepUsers") {
                        $cmd = "mysql mysql -sre 'SELECT user,host FROM user;'|grep rep\n";
                } elsif ($command[1] eq "iptables") {
                        $cmd = "iptables -L -n --line-numbers\n";
                } elsif ($command[1] eq "ss") {
                        $cmd = "sockstat -46 -l -s";
                } elsif ($command[1] eq "psaux") {
                        $cmd = "ps aux|grep";
                } elsif ($command[1] eq "icanhazip") {
                        $cmd = "curl -4 icanhazip.com\n";
                } elsif ($command[1] eq "pass") {
                        $cmd = "PASSWORD\n";
                } elsif ($command[1] eq "clearcomments") {
                        $cmd = "egrep -v '^(\$|[[:space:]]*#|\\;)' ";
                } elsif ($command[1] eq "disableLsColors") {
                        $cmd = "alias ls='ls --color=never'";
                } else {
                        $cmd = "unknown urxvtCommand";
                }
                $self->tt_write ($cmd);
        }
}

NOTA: Si estamos configurándolo en FreeBSD habrá que cambiar el comando "ss -lpunt|grep LISTEN|grep" por "sockstat -sv|grep LISTEN|grep"

Configuramos las keysyms:

vi .Xresources

URxvt.keysym.Control-m: perl:kr0m:mysqlSlave
URxvt.keysym.Control-h: perl:kr0m:iptables
URxvt.keysym.Control-j: perl:kr0m:ss
URxvt.keysym.Control-o: perl:kr0m:clearcomments
URxvt.keysym.Control-p: perl:kr0m:psaux
URxvt.keysym.Control-i: perl:kr0m:icanhazip
URxvt.keysym.Control-u: perl:kr0m:pass
URxvt.keysym.Control-k: perl:kr0m:disableLsColors
URxvt.iso14755: False
URxvt.perl-ext-common: default,kr0m

Recargamos la config:

xrdb -load .Xresources

Con Ctrl+X ejecutaremos el comando asociado.

De este modo no hará falta hacer migraciones de alias ni de ningún tipo de configuración.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí