20090519

scripts para generar sentencias sql apartir de listados de archivos

Se tiene un directorio con 534 archivos en el formato CDMEXNCxxxxxyyyyy donde yyyyy son un numero de serie y xxxxx son etiquetas de operadores

$ ls -1 CD*| head
CDMEXNCARGNC03179
CDMEXNCARGNC03180
CDMEXNCARGNC03181
CDMEXNCARGNC03182
CDMEXNCAUSOP02976
CDMEXNCAUSOP02977
CDMEXNCAUSOP02978
CDMEXNCAUSOP02979
CDMEXNCAUTCA02374
CDMEXNCAUTCA02375

Estos datos fueron registrados en una tabla de BD, ¿se necesita consultar todos los registro? Solo entrega un registro por archivo.
La sentencia a emplear es

select vplmn, sqn, cre_date, name_fl, tot_reg from ixmed_d_roamtapout_sum where vplmn='ARGNC' and sqn=3179;

Para evitar el copiar cada segmento y pegarlo registro por registro

$ for _a in `ls -1 CD* | cut -c8-12 | sort -u`
> do
> echo "union">>file.sql;
> echo "select vplmn, sqn, cre_date, name_fl, tot_reg from ixmed_d_roamtapout_sum where vplmn='$_a' and sqn in \
> `ls -1 | grep $_a | cut -c13-17 | xargs | sed -e 's/ /,/g' -e 's/.*/(&)/'`" >> file.sql
> done
$ head file.sql
union
select vplmn, sqn, cre_date, name_fl, tot_reg from ixmed_d_roamtapout_sum where vplmn='ARGNC' and sqn in (03179,03180,03181,03182)
union
select vplmn, sqn, cre_date, name_fl, tot_reg from ixmed_d_roamtapout_sum where vplmn='AUSOP' and sqn in (02976,02977,02978,02979)
union
select vplmn, sqn, cre_date, name_fl, tot_reg from ixmed_d_roamtapout_sum where vplmn='AUTCA' and sqn in (02374,02375,02376,02377)
union
select vplmn, sqn, cre_date, name_fl, tot_reg from ixmed_d_roamtapout_sum where vplmn='AUTMM' and sqn in (03060,03061,03062,03063)
union
select vplmn, sqn, cre_date, name_fl, tot_reg from ixmed_d_roamtapout_sum where vplmn='AUTPT' and sqn in (02988,02989,02990,02991)

Ahora se puede emplear el archivo file.sql eliminando la primera linea para obtener el resultado. Si se cuenta la cantidad de registros que entrega en este caso es idéntico a la cantidad de archivos.

Explicación del código
  • `ls -1 CD* | cut -c8-12 | sort -u`
    • Se lista en una sola columna todos los archivos que inicien con CD, se cortan del caracter 8 al 12 y se ordenan eliminando duplicados
    • $ ls CD* | head
      CDMEXNCARGNC03179
      CDMEXNCARGNC03180
      CDMEXNCARGNC03181
      CDMEXNCARGNC03182
      CDMEXNCAUSOP02976
      CDMEXNCAUSOP02977
      CDMEXNCAUSOP02978
      CDMEXNCAUSOP02979
      CDMEXNCAUTCA02374
      CDMEXNCAUTCA02375
      $ ls CD* | cut -c8-12 | head
      ARGNC
      ARGNC
      ARGNC
      ARGNC
      AUSOP
      AUSOP
      AUSOP
      AUSOP
      AUTCA
      AUTCA
      $ ls CD* | cut -c8-12 | sort -u | head
      ARGNC
      AUSOP
      AUTCA
      AUTMM
      AUTPT
      AUTTR
      BELMO
      BELTB
      BGR01
      BHRBT
  • for _a in `ls -1 CD* | cut -c8-12 | sort -u`; do [...] done;
    • Se emplea un ciclo for para asignar a la variable $_a todas las cadenas que cumplan con el resultado del ls
  • Dentro de cada ciclo
    • Imprime union y lo manda al archivo file.sql
    • Imprime la sentencia concatenada con la salida del ls y lo envia al archivo file.sql
    • `ls -1 | grep $_a | cut -c13-17 | xargs | sed -e 's/ /,/g' -e 's/.*/(&)/'`
      • Se listan los archivos
      • Se busca el que tenga $_a en su nombre
      • Corta del caracter 13 al 17
      • Convierte la salida de una columna a una fila
      • Transforma todos los espacios en comas
      • Agrega a toda la cadena paréntesis al inicio y al final
      • $ ls -1 CD* | head
        CDMEXNCARGNC03179
        CDMEXNCARGNC03180
        CDMEXNCARGNC03181
        CDMEXNCARGNC03182
        CDMEXNCAUSOP02976
        CDMEXNCAUSOP02977
        CDMEXNCAUSOP02978
        CDMEXNCAUSOP02979
        CDMEXNCAUTCA02374
        CDMEXNCAUTCA02375
        $ ls -1 CD* | grep ARGNC
        CDMEXNCARGNC03179
        CDMEXNCARGNC03180
        CDMEXNCARGNC03181
        CDMEXNCARGNC03182
        $ ls -1 CD* | grep ARGNC | cut -c13-17
        03179
        03180
        03181
        03182
        $ ls -1 CD* | grep ARGNC | cut -c13-17 | xargs
        03179 03180 03181 03182
        $ ls -1 CD* | grep ARGNC | cut -c13-17 | xargs | sed -e 's/ /,/g'
        03179,03180,03181,03182
        $ ls -1 CD* | grep ARGNC | cut -c13-17 | xargs | sed -e 's/ /,/g' -e 's/.*/(&)/'
        (03179,03180,03181,03182)

Escrito con el Navegador Flock

20090511

SMTP prioridad alta

Cuando se maneja directamente en el protocolo SMTP y se requiere que el mensaje sea enviado con una prioridad elevada se puede aplicar la etiqueta


X-Priority: 1


Escrito con el Navegador Flock

20090323

ajustar fecha

Para ajustar la fecha del sistema en base a servidores en México
$ sudo ntpdate mx.pool.ntp.org
ó
$ sudo ntpdate ntp.astrosmo.unam.mx

Escrito con el Navegador Flock

20090318

colabora con wikipedia

¿Quien no ha empleado la wikipedia?
¿Con que se ha retribuido?

Es importante las donaciones en efectivo pero existen otras formas de colaborar. Por mi parte ha iniciado un seguimiento de las paginas que he consultado y si encuentro un cambio inapropiado (algo como: yo estuve aquí) lo regreso a su original.

Escrito con el Navegador Flock

20090308

issue.net

El mensaje que se muestra justo antes de solicitar la contraseña cuando se hace un login remoto esta definido en el archivo /etc/issue.net

El mio es un paste(1) de cowsay(1) y figlet(6)
issue.net

alias

Alias empleados
alias mocp='mocp /ruta/a/musica/ -T /usr/share/moc/themes/green_theme';
alias _TNSNames=" sudo gvim /ruta/a/tnsnames.ora"
alias sl="sl -lFea"
alias apt-get="sudo apt-get"
alias mount="sudo mount"
alias f-spot="dbus-launch f-spot"

bbrun

En Gnome o KDE se puede ejecutar algún comando o aplicación en base a una combinación de teclas (normalmente F2) algo realmente util pero que no se encuentra por omisión en fluxbox.

Para solucionar esto se puede instalar bbrun.

$ apt-get install bbrun
[...]
$ bbrun -w

La opción -w lo ejecuta iniciando la ventana.
ventana bbrun -w

Y para usarlo con una combinación de teclas se edita ~/.fluxbox/keys.
$ echo "Mod4 r :ExecCommand bbrun -w" >>~/.fluxbox/keys

consol 2009

Congreso Nacional de Software Libre 2009

20090226

yum

Para instalar paquetes en redhat vía yum desde un DVD

# mount /dev/dvd /mnt/rh
# vi /etc/yum.repos.d/local.d
[local]
name=local
baseurl=file:///mnt/rh/Server/
enabled=1
# yum update
# yum --nopgpgcheck install vim
Escrito con el Navegador Flock

20090210

Tabs en Fluxbox

Los tabs son una funcionalidad que permite agrupar en una sola ventana varias aplicaciones; como similitud podemos tomar las pestañas de firefox.

Para usarlas en fluxbox tenemos que arrastrar la ventana con el botón medio del ratón (o si esta la emulación con los dos botones al mismo tiempo) sobre la que nos interese agrupar. Con esto en la misma ventana tendremos ahora dos aplicaciones
dos ventanasuna ventana, dos aplicacionesSe puede observar que es ahora una sola ventana, incluso en la barra. Para cambiar puede ser con un click en el titulo o con alt+tab. Se pueden agrupar N aplicaciones en una sola. También es posible  definir donde queremos que agrupe: en la barra de titulo o en pestañas separadas. Esto ultimo en el menú de fluxbox --> Configuration --> Tab Options --> Tabs in Titlebar
Ahora las pestañas se encuentran bajo la ventana
pestaña bajo ventana
Nota: Agradezco la nota [Conocias?] Mozilla Prism de Rafael Carrillo, ahora puedo tener aplicaciones web separadas del navegador.


Escrito con el Navegador Flock

Cliente VPN Cisco en Linux

En las empresas puede ser común el uso de vpn para ingresar remotamente a las redes de trabajo.
En caso de una vpn montada con cisco, normalmente para conectar emplean el cliente para winbug$
dando solo un archivo perfil.pcf.

Para conectarnos en Linux es necesario instalar el cliente

$ sudo apt-get install vpnc


Los datos mínimos para enlazarnos son
  • Servidor
  • Perfil
  • Usuario

    Estos datos se pueden ver del archivo .pcf

    $ grep Host perfil.pcf
    Host=vpn.empresa.com.mx

    $ grep GroupName perfil.pcf
    GroupName=perfil

    $ grep Username perfil.pcf
    Username=usuario


    El perfil puede tener contraseña, para verla podemos buscarla en

    $ grep GroupPwd perfil.pcf
    GroupPwd=
    enc_GroupPwd=B14D9029FBACA31CDF8FB116A215EB020E51CFAB4CBF6D75A598B9787B98691B58CDBC41349E3526265B7C73F3A8ADF1


    Si la contraseña se encuentra cifrada se puede emplear

    curl http://www.unix-ag.uni-kl.de/~massar/bin/cisco-decode?enc=B14D9029FBACA31CDF8FB116A215EB020E51CFAB4CBF6D75A598B9787B98691B58CDBC41349E3526265B7C73F3A8ADF1 2>/dev/null | grep clear
    clear: M0n3d@s


    Ahora para conectarnos basta con

    $ sudo vpnc-connect --gateway vpn.empresa.com.mx --id perfil --username usuario

    Con lo que pedirá un dos contraseñas, la primera para el perfil y la segunda del usuario.


    Si se quiere almacenar los datos se puede tener un archivo con la información necesaria y conectarse llamando a dicho archivo.

    $ cat vpn.conf
    IPSec gateway vpn.empresa.com.mx
    IPSec ID perfil
    IPSec secret contra_perfil
    Xauth username usuario
    Xauth password contra_usuario

    $ sudo vpnc-connect ./vpn.conf
  • 20090201

    Planeta Linux

    Quiero agradecer al equipo de Planeta Linux por incluir es blog dentro de la instancia México.

    Planeta Linux es una comunidad de usuarios cuyas aportaciones giran entorno al sistema Linux: aplicaciones, kernel, noticias, programación y experiencias. En este planeta existen diversas instancias las cuales se refieren a cada país, en este momento son Ecuador, España, Chile, Colombia, El Salvador, Guatemala, México, Nicaragua, Perú , Venezuela, Panamá
    Escrito con el Navegador Flock

    20090102

    temacilli

    He creado un nuevo blog con información especifica de telecomunicaciones.
    Lo he llamado temacilli que del nahuatl significa comunicacion a distancia.

    http://petrohs-telecom.blogspot.com

    20081215

    protector de pantalla (xlock)

    Un protector de pantalla mas ligero que el xscreensaver es xlock

    Instalación
    $ apt-get install xlockmore xautolock
    $ apt-get install vlock away


    xautolock es el protector. xautolock es un demonio para bloquear automáticamente la pantalla
    $ xautolock -time 5 &
    Levanta en background bloquear la pantalla si en cinco minutos no hay actividad.

    vlock y away son protectores de consola :p

    20081126

    Renombrando identidad (hostname-username)

    Para cambiar el nombre de nuestro equipo

    # vi /etc/hosts
    127.0.1.1 viejoHostname --> 127.0.1.1 nuevoHostname
    # hostname nuevoHostname
    # vi /etc/hostname
    viejoHostname --> nuevoHostname


    Para cambiar el nombre y grupo de nuestro usuario

    # usermod -l nuevoUserName viejoUserName
    # mv /home/viejoUserName /home/nuevoUserName
    # usermod -g nuevoGrupo nuevoUserName

    20081112

    Empleo del teclado en fluxbox

    De las cosas que me agradan en fluxbox es el empleo de combinaciones en teclado para ejecutar acciones de una manera rápida y fácil de configurar.

    Para ello se requiere modificar el archivo .fluxbox/keys con las atajos y su respectiva función.

    Para no desperdiciar la tecla de winbug$ hago uso de esta como Mod4; para identificar como reconoce esta tecla empleo el comando xev.

    petrohs@tlahtolli:/home/petrohs$ cat .fluxbox/keys
    OnDesktop Mouse1 :HideMenus
    OnDesktop Mouse2 :WorkspaceMenu
    OnDesktop Mouse3 :RootMenu
    OnDesktop Mouse4 :NextWorkspace
    OnDesktop Mouse5 :PrevWorkspace

    Mod1 Tab :NextWindow
    Mod1 Shift Tab :PrevWindow
    Mod4 F1 :Workspace 1
    Mod4 F2 :Workspace 2
    Mod4 F3 :Workspace 3
    Mod4 F4 :Workspace 4
    Mod4 F5 :Workspace 5
    Mod4 F6 :Workspace 6
    Mod4 F7 :Workspace 7
    Mod4 F8 :Workspace 8
    Mod4 F9 :Workspace 9
    Mod4 F10 :Workspace 10
    Mod4 F11 :Workspace 11
    Mod4 F12 :Workspace 12
    Mod4 l :ExecCommand xlock
    Mod4 t :ExecCommand xterm
    Mod4 f :ExecCommand firefox
    Mod4 r :ExecCommand bbrun -w
    Mod4 g :ExecCommand gvim
    Mod4 m :ShowDesktop
    XF86AudioMute :ExecCommand mocp --pause
    Mod4 XF86AudioMute :ExecCommand mocp --unpause
    XF86AudioRaiseVolume :ExecCommand mocp -v +2
    XF86AudioLowerVolume :ExecCommand mocp -v -2
    Mod4 Menu :RootMenu
    Mod4 3 :Maximize
    Mod4 Shift 3 :Minimize
    Mod4 comma :ExecCommand gksudo dhclient
    Mod4 period :ExecCommand gksudo "/sbin/iwconfig wlan0 essid red key contra"
    petrohs@tlahtolli:/home/petrohs$


    Donde:
    Mod1 Alt
    Mod4 Win
    NextWindow Siguiente ventana
    PrevWindow Ventana anterior
    Workspace # Cambia al escritorio #
    ExecCommand Ejecuta el comando
    ShowDesktop Minimiza todo
    RootMenu Muestra el menú
    Maximize Maximizar ventana
    Minimize Minimizar ventana

    20081111

    identificar teclas xev

    xev es un programa (viene en el paquete x11-utils) que nos permite monitorizar los eventos que ocurren en nuestro sistema gráfico.
    Si movemos el ratón o presionamos una tecla nos regresa como es interpretado por X.

    windows
    KeyRelease event, serial 32, synthetic NO, window 0x5800001,
    root 0x53, subw 0x0, time 169107828, (35,221), root:(519,267),
    state 0x40, keycode 115 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False


    Punto
    KeyRelease event, serial 32, synthetic NO, window 0x5a00001,
    root 0x53, subw 0x0, time 111760512, (226,71), root:(595,393),
    state 0x0, keycode 60 (keysym 0x2e, period), same_screen YES,
    XLookupString gives 1 bytes: (2e) "."
    XFilterEvent returns: False


    Tabulador
    KeyRelease event, serial 32, synthetic NO, window 0x5a00001,
    root 0x53, subw 0x0, time 111762984, (226,71), root:(595,393),
    state 0x0, keycode 23 (keysym 0xff09, Tab), same_screen YES,
    XLookupString gives 1 bytes: (09) " "
    XFilterEvent returns: False


    Disminuir volumen
    KeyRelease event, serial 29, synthetic NO, window 0x5a00001,
    root 0x53, subw 0x0, time 112005797, (378,-17), root:(770,328),
    state 0x0, keycode 174 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False


    Aumentar volumen
    KeyPress event, serial 32, synthetic NO, window 0x5a00001,
    root 0x53, subw 0x0, time 112007206, (378,-17), root:(770,328),
    state 0x0, keycode 176 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False


    Quitar sonido
    KeyRelease event, serial 32, synthetic NO, window 0x5a00001,
    root 0x53, subw 0x0, time 112007847, (378,-17), root:(770,328),
    state 0x0, keycode 160 (keysym 0x1008ff12, XF86AudioMute), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False


    Menu
    KeyPress event, serial 32, synthetic NO, window 0x5a00001,
    root 0x53, subw 0x0, time 112012636, (169,-13), root:(561,332),
    state 0x0, keycode 117 (keysym 0xff67, Menu), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

    20081008

    IE en Linux

    Cuando por X o Y razones es necesario el uso de ms-IE y no podemos queremos hacer uso de winbugs podemos dio$ nos perdone ejecutarlo sobre Linux.

    Existe el proyecto ies4linux que nos permite instalar IE. Para ello requiere que nuestro sistema tenga instalado wine y cabextract

    Instalacion



    $ sudo apt-get install wine cabextract
    $ wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz
    $ tar -zxvf ies4linux-latest.tar.gz
    $ cd ies4linux-*
    $ ./ies4linux --install-ie55 --install-corefonts --no-desktop-icon --beta-install-ie7 --no-gui
    IEs4Linux will:
    - Instalar Internet Explorers: 6.0, 5.5, 7.0
    - Usando el idioma de IE: ES
    - Instalar Adobe Flash 9.0
    - Install MS Core Fonts
    - Instalar todo en: /home/petrohs//.ies4linux
    [ OK ]

    Descargando todo lo que necesitamos
    Downloading from microsoft.com:
    {...}
    Downloading from Evolt Browser Archive:
    {...}
    Downloading from macromedia.com:
    {...}
    Downloading from sourceforge.net
    {...}
    [ OK ]

    Instalando IE 6
    {...}
    [ OK ]

    Instalando Flash Player 9
    {...}
    [ OK ]

    Instalando IE 5.5
    {...}
    [ OK ]

    Instalando IE 7 (beta)
    {...}
    [ OK ]

    IEs4Linux installations finished!




    Si lo realizas como root, sale un curioso mensaje de advertencia


    ¡Estas como root! No es aconsejable. IE es muy inseguro para que le des privilegios de root.
    ¿Quieres un tip de un amigo? Ejecutame como usuario normal o, mejor, si puedes, crea un usuario por aparte para usar IE.

    20081003

    Linux para el sector salud

    Pues gratamente me sorprendio el hecho de que a las trabajadoras del sector salud les entregaran unas portatiles para realizar la captura de informacion de una manera mas eficientes que sus clasicas tablas.

    De linux


    De linux


    Estos equipos cuentan con GNU/Linux Debian + KDE

    De linux


    De linux