Mostrando entradas con la etiqueta herramienta. Mostrar todas las entradas
Mostrando entradas con la etiqueta herramienta. Mostrar todas las entradas

lunes, 16 de octubre de 2017

Combinar archivos de PDF utilizando pdftk

Necesitaba combinar unos archivos PDF de forma que el archivo final incluyera diversos rangos de cada uno de los archivos de entrada en un orden específico. Para eso utilicé la herramienta pdftk, la cual permite indicar la secuencia de rangos que conformarán el archivo de salida .
pdftk A="archivo1.pdf" B="archivo2.pdf" cat A1 B1 A3-20 output salida.pdf

domingo, 15 de noviembre de 2015

Instalar Webmin y Usermin en Bananian (Debian)

Instalación

Para la administración de mi Banana Pi, me pareció interesante utilizar Webmin, una aplicación CGI que permite administrar computadores a través de una interfaz web.
Lo primero es agregar el repositorio de Webmin a las fuentes de de APT, ya que este paquete no se encuentra en los repositorios de Debian.
Para ello creamos el siguiente archivocon de texto:
/etc/apt/sources.list.d/webmin.list
Y le agregamos las siguientes líneas
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
Agregamos la clave pública con la cual están firmados los paquetes DEB de Webmin
wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
Actualizamos la información de repositorios de APT y los paquetes instalados
sudo aptitude update && sudo aptitude full-upgrade -y
Instalamos Webmin y Usermin
sudo aptitude install webmin usermin 
Para acceder a Webmin debemos navegar a https://ejemplo.com:10000
Para acceder a Usermin debemos navegar a https://ejemplo.com:20000

Configuración de Webmin en Subdirectorio con HTTPS

Basándonos en las indicaciones para Webmin con Apache (no aptas para proxy con SSL).
Para poder acceder a estas aplicaciones a través de https://ejemplo.com/webmin/
Habilitamos el módulo proxy de Apache HTTPD con
sudo a2enmod proxysudo service apache2 restart
Modificar el archivo /etc/webmin/config, agregando las siguientes líneas
webprefix=/webmin
webprefixnoredir=1
referer=ejemplo.com
Modificar el archivo /etc/webmin/miniserv.conf, agregando la siguiente línea
cookiepath=/webmin
Reiniciar Webmin ejecutando
/etc/webmin/restart 
Y agregamos a dentro de VirtualHost en /etc/apache2/sites-available/default-ssl.conf
### Webmin ###
# Put this after the other LoadModule directives
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

# Put this in the main section of your configuration
# (or desired virtual host, if using Apache virtual hosts)

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
#ProxyRequests Off
#ProxyPreserveHost On

<Proxy *>
# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
Require all granted
</Proxy>

ProxyPass /webmin https://localhost:10000
ProxyPassReverse /webmin https://localhost:10000

<Location webmin="">
# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
Require all granted
</Location>
Esta configuración tiene carácter experimental. Un cambio deseable es que Webmin utilice un certificado SSL en el cual Apache HTTPD confíe, a fin de cambiar "SSLProxyVerify none"

domingo, 8 de noviembre de 2015

Encontrar la dirección IP de un equipo en la red local (nmap)

Lo primero que tuve que hacer cuando comencé a utilizar mi Banana Pi, fue averiguar cuál dirección IP le había asignado el enrutador por DHCP, para poder conectarme por SSH y hacer las respectivas configuraciones.
Aprovechando que tengo Nmap instalado en mi computador de escritorio, hice uso de los siguientes comandos (desde Windows).
Para obtener los datos generales de la red local:
ipconfig
El cual da como respuesta un listado de la información de todas las interfaces de red del equipo. En la interfaz apropiada (inalámbrica o cableada, por ejemplo), nos interesan los siguientes datos:
   IPv4 Address. . . . . . . . . . . : 192.168.0.80
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
Con la dirección IP y la máscara de subred, ejecutamos (con permiso de Administrador)
nmap -sP 192.168.0.80/24
El listado resultante nos indicará cuáles direcciones IP están activas en la red local, así como el nombre del equipo.

jueves, 10 de septiembre de 2015

Desinstalar actualizaciones de Windows por consola de comandos

Estaba leyendo sobre varias actualizaciones indeseables de Windows, y decidí validar que no estuviesen instaladas en mi sistema, para lo cual fui a la sección de Actualizaciones de Windows en el Panel de Control.

Sin embargo, me resultó engorroso consultar puntualmente si las actualizaciones de mi interés estaban instaladas o no.

Buscando en Internet, conseguí que el comando para listar todas las actualizaciones instaladas es:
wmic qfe list
Podemos filtrarlo utilizando
wmic qfe list | findstr KB1234567
Podemos redireccionar la salida del comando a un archivo de texto, y ahí consultar más cómodamente con
wmic qfe list > C:\kblist.txt
cat C:\kblist.txt | findstr KB1234567
Para desinstalar una actualización, basta con ejecutar
wusa /uninstall /kb:1234567 /quiet /norestart 

viernes, 4 de septiembre de 2015

Instalación sencilla de Sysinternals

Viniendo de Linux, me resultó particularmente frustrante que al intentar ejecutar el comando "whois" en la consola de comandos de Windows, me indicase que no existía ese ejecutable en mi equipo.

Una rápida búsqueda en Google me lleva a la página de Microsoft de Sysinternals, y allí veo que tengo la opción de descargar "whois" individualmente, o la suite completa. Para no pasar otra vez por una molestia similar, decidí descargar la suite.

Pensé que el archivo ZIP iba a tener algunas indicaciones, o por lo menos recomendaciones, para instalarlos, pero no fue el caso. Es un archivo ZIP que contiene un montón de ejecutables, un archivo LEEME, acuerdos de usuario final, y algunos archivos de ayuda para las aplicaciones.

Otra búsqueda en Google, me lleva a varios instaladores desarrollados por terceros -lo cual no me inspira mucha confianza- y algunos guiones de comandos en algunos foros para crear accesos directos en el menú inicio -lo cual no me interesa.

Finalmente, decidí abrir CMD como administrador, ejecutar el comando
mkdir "C:\Program Files\Sysinternals"
Copiar el contenido descomprimido del archivo zip dentro de esa carpeta, y luego agregarla a PATH, para que sea ejecutable desde la consola sin tener que indicar la ruta completa del ejecutable. Para eso ejecuté:
setx PATH "%PATH%;C:\Program Files\Sysinternals"
Listo. Ahora puedo ingresar whois ejemplo.com desde la consola. La primera vez que se ejecuta pide aceptar un acuerdo de usuario final.

sábado, 25 de octubre de 2014

Desduplicar archivos idénticos en Linux

Recientemente tuve que reconstruir mi colección de música a partir de mi reproductor varios respaldos parciales (en un reproductor de música, en una memoria USB, una computadora vieja, etc), y aparte del problema de tener que categorizar de nuevo algunas canciones, me encontré con que un mismo archivo estaba en diferentes carpetas o rutas en los diversos soportes, por lo cual colocar todas las subcarpetas en un mismo directorio resultaba en un que una misma canción podía estar repetida varias veces.

Inicialmente, quise utilizar los metadatos de las canciones para detectar los archivos duplicados, pero era un trabajo manual muy tedioso ordenar por artista e ir leyendo cada una, así que decidí hacer un guión en bash.

A continuación el método a grandes rasgos:
  1. Para detectar si un archivo está repetido, se hará una comparación de su huella SHA256, una función robusta de resumen criptográfico.
  2. Se comparan dos carpetas a la vez (en mi caso una carpeta con una colección parcial que estaba mejor estructurada que otra carpeta con canciones sueltas).
  3. Se ejecuta la función de SHA256 sobre todos los archivos de una carpeta y se almacena el nombre y la huella de cada archivo. Luego se ejecuta la operación con la otra carpeta.
  4. Se combinan ambos listados y para determinar si alguna huella está repetida.
  5. Para los casos cuando un archivo esté duplicado, en una carpeta se conservará y en la otra será eliminado. Por simplicidad, en una carpeta siempre se conservará y en la otra siempre se eliminará.
  6. Se utiliza la información de las huellas repetidas para determinar a cuales archivos se corresponden en la carpeta para eliminar.
  7. Se borran masivamente los archivos repetidos en la carpeta para borrar.
El guión quedó así:
#!/bin/sh

# Autor: J. Navarro
# Fecha: 2014
# Este programa se distribuye bajo licencia GPLv2
# Puede obtener el texto completo de la licencia en:
# http://www.gnu.org/licenses/gpl-2.0.html


#Inicialización de variables

NOBORRARDIR=<carpeta donde se conservan los duplicados>;
NOBORRARTMP="/tmp/noborrar.sha256";
NOBORRARREP="/tmp/noborrar.sha256.repetido";

BORRABLEDIR=<carpeta de donde se eliminan los duplicados>;
BORRABLETMP="/tmp/borrable.sha256";
BORRABLEREP="/tmp/borrable.sha256.repetido"

REPETIDOTMP="/tmp/repetido.sha256"
REPETIDOMIX="/tmp/repetido-mix.sha256"

#Ejecución de comandos

echo "Generando resumen criptografico de $NOBORRARDIR"

find $NOBORRARDIR -type f -exec sha256sum {} + > $NOBORRARTMP

echo "Generando resumen criptografico de $BORRABLEDIR"

find $BORRABLEDIR -type f -exec sha256sum {} + > $BORRABLETMP

echo "Detectando archivos repetidos"

 #listado de resumenes criptograficos de archivos repetidos
cat $NOBORRARTMP $BORRABLETMP | cut -f1 -d\ | sort | uniq -d \
> $REPETIDOTMP


#listado combinado donde los archivos repetidos estan juntos
cat $NOBORRARTMP $BORRABLETMP | sort | egrep -f $REPETIDOTMP \
> $REPETIDOMIX

# Cuando grep genera el error "Referencia hacia atrás inválida"
# cat $NOBORRARTMP $BORRABLETMP | grep -F -f $REPETIDOTMP | sort \

#> $REPETIDOMIX

#visualizar el listado de archivos repetidos
pager $REPETIDOMIX

echo "Archivos repetidos a conservar"

egrep $NOBORRARTMP -f $REPETIDOTMP > $NOBORRARREP
pager $NOBORRARREP

echo "Archivos repetidos a eliminar"

egrep $BORRABLETMP -f $REPETIDOTMP > $BORRABLEREP
pager $BORRABLEREP

# Se toman solamente los nombres de archivo,
# se encierran entre comillas y se borran.
cat /tmp/borrable.sha256.repetido | perl -pe "s/[^ ]+[ ]+//" | \
perl -pe 'chomp $_; $_="\"$_\"\n"' | xargs rm

martes, 3 de abril de 2012

Respaldos con Squashfs

Tengo un montón de archivos en la computadora del trabajo que deseo guardar como referencia, sin que ocupen mucho espacio en disco.
Inicialmente había creado archivos tar.xz, sin embargo abrirlos extraer un pequeño archivo de un contenedor de varios gigas se demora demasiado para mi gusto.
Fue entonces cuando me encontré con un artículo que explica como utilizar SquashFS para este propósito. SquashFS crea un sistema de archivos comprimido de sólo lectura utilizando la librería XZ.
Para saber si nuestro sistema Linux es compatible con SquashFs basta con ejecutar
$ modinfo squashfs
Instalar en Ubuntu
Sólo hace falta instalar el paquete squashfs-tools utilizando el Centro de Software Ubuntu, Synaptic o ejecutando
$ sudo apt-get install squashfs-tools
Instalar en SUSE
Se instala el paquete squashfs utilizando Yast o ejecutando
# zypper in squashfs
Utilizar la herramienta
Luego basta con invocar el programa mksquashfs sobre los directorios a comprimir
$ mksquashfs carpeta1/ carpeta2/ archivo.sfs
Y tendremos el archivo comprimido archivo.sfs cuyo contenido es el de las dos carpetas indicadas en el paso anterior. Para poder acceder la información que allí se encuentra, basta con ejecutar:
$ sudo mount -t squashfs -o loop archivo.sfs /mnt #en Ubuntu
# mount -t squashfs -o loop archivo.sfs /mnt #en SUSE
Ahora para acceder a los archivos solo tenemos que buscarlos en la ruta /mnt
$ cd /mnt
$ ls
Para desmontar el archivo sólo basta ejecutar
$ sudo umount /mnt #en Ubuntu
# umount /mnt #en SUSE
Listo!