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
#! 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:
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:
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.