Archive for the ‘Scripting’ Category

Comparar directorios recursivamente

Miércoles, Agosto 24th, 2011

Hola gente hoy quise hacer esto, y como un pavo busqué en google. Y me sorprendí de estas cosas que tiene linux que hace fácil todo.

Se los dejo acá.

diff –brief -r dirA dirB

Por si hay otro pavo como yo buscando lo mismo en cristiano.

Saludos.

MN

Postgres función para separar en meses en columnas

Miércoles, Agosto 10th, 2011

Bueno, necesitaba hacer un reporte para el SENASA en el que en cada columna haya un mes. Onda enero, febrero, etc. Entonces hice una pequeña función que me ayudará a hacerlo, es muestro como.

(más…)

Quitar espacios del nombre de los archivos

Miércoles, Agosto 10th, 2011

Bueno gente, esto no tiene mucho más de lo que dice el título. Es más lo dejo acá para no olvidarmelo nomás.

ls | while read -r FILE; do mv -v “$FILE” `echo $FILE | tr ‘ ‘ ‘_’ `; done;

Lo saqué de acá: https://bbs.archlinux.org/viewtopic.php?id=36305

Muy piola.

MN

Correr automáticamente geoserver (at boot time)

Jueves, Abril 14th, 2011

Holass samigos, acá les dejo el script que uso para iniciar geoserver, lo ponen el /etc/init.d y luego corren el comando:

update-rc.d geoserver defaults

Espero les sirva.

#! /bin/sh
### BEGIN INIT INFO
# Provides:          geoserver
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: GeoServer OGC server
### END INIT INFO

# Author: Lennart Juette

# Geoserver configuration - use /etc/default/geoserver to override these vars
# user that shall run GeoServer
USER=root
GEOSERVER_HOME=/opt/geoserver-2.0.3
GEOSERVER_DATA_DIR=$GEOSERVER_HOME/data_dir

PATH=/usr/sbin:/usr/bin:/sbin:/bin
DESC="GeoServer daemon"
NAME=geoserver
JAVA_HOME=/usr/lib/jvm/java-6-openjdk/jre
JAVA_OPTS="-Xms128m -Xmx512m"
DAEMON="$JAVA_HOME/bin/java"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

DAEMON_ARGS="$JAVA_OPTS $DEBUG_OPTS -DGEOSERVER_DATA_DIR=$GEOSERVER_DATA_DIR -Djava.awt.headless=true -jar start.jar"

# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

do_start(){

	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started

	start-stop-daemon --start --pidfile $PIDFILE --make-pidfile \
		--chuid $USER --chdir $GEOSERVER_HOME \
		-b --test --exec $DAEMON -- $DAEMON_ARGS > /dev/null \
		|| return 1

	start-stop-daemon --start --pidfile $PIDFILE --make-pidfile \
		--chuid $USER --chdir $GEOSERVER_HOME \
		-b --exec $DAEMON -- $DAEMON_ARGS \
		|| return 2
}

do_stop(){

	# Return
	#   0 if daemon has been stopped
	#   1 if daemon was already stopped
	#   2 if daemon could not be stopped
	#   other if a failure occurred

	start-stop-daemon --stop --pidfile  $PIDFILE \
		--user $USER \
		--retry=TERM/30/KILL/5

	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2

	# Many daemons don't delete their pidfiles when they exit.
	rm -f $PIDFILE
	return "$RETVAL"

}

case "$1" in
  start)
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	do_start
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  stop)
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  restart|force-reload)
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	case "$?" in
	  0|1)
		do_start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		esac
		;;
	  *)
	  	# Failed to stop
		log_end_msg 1
		;;
	esac
	;;
  *)
	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
	exit 3
	;;
esac

:

Script para importar varios shapes a postgis

Jueves, Abril 14th, 2011

Hola gente, para todos aquellos que hayan leído este post, este no les agregará mucho. Solo quiero dejarlo acá por si algún día lo tengo que usar de nuevo. Este escripcito nos pasa a postgis todos los archivos de un directorio, no es guau pero nos ahorra una o dos horas de trabajo.

PGPASSWORD=clavedepostgres
export PGPASSWORD
PGUSER=postgres
export PGUSER

for i in $(ls *.shp); do
nombre=$(echo $i | cut -d "." -f 1);
shp2pgsql -I -s 4326 -W latin1 $i $nombre | psql -d hidricos
done;
Un abrazo a mi amigo Luís Acosta, que me ayudó con todo esto.
Saludos a todos.

Como importar un dump de SQL Manager para postgres

Martes, Marzo 15th, 2011

Hola gente, a veces los clientes me envían dumps (archivos SQL) de SQL manager, el problema es el encode de estos archivos, utf16 en lugar de utf8. si alguien tuvo el problema para convertir los archivos muy fácil…

iconv -f utf16 -t utf8 -o to_postgres.sql from_sql_manager.sql
psql -U fpuertas bd_otea -f  to_postgres.sql

y listo, ya podemos importar el archivo.

Espero les sirva.

Ligthttp over plesk

Jueves, Septiembre 16th, 2010

El escenario es el siguiente, tenemos un virtualhost que consume muchísimos recursos de CPU por la gran cantidad de visitas que recibe, entonces la idea es activar solo para ese host ligthttp dentro de plesk de una manera transparente.

(más…)

Sincronizar carpetas en Mac con rsync

Martes, Julio 27th, 2010

Bueno, aquí les voy a dejar un buen ejemplo de como sincronizar fácilmente carpetas con rsync. Lo primero que tienen que hacer es leer este post en donde les explica como generar una public key, la que será usada luego como mecanismo de autenficación. Una vez hecho eso vamos a crear una flujo en el automator que les tiene que quedar así:

(más…)

Encriptar archivos usando gpg

Martes, Julio 27th, 2010

Bueno, este va a ser un post cortito así que voy al grano rápido. El escenario es el siguiente, tengo una copia de seguridad .tar.gz y no quiero que nadie más que yo pueda acceder a ella en un servidor determinado.

(más…)

Como tener multiples instancias de mysql en el mismo servidor

Martes, Junio 1st, 2010

A veces es útil darle a nuestros usuarios la posibilidad de crear bases de datos y dropearlas, pero claro, es un compromiso para la seguridad ya que pueden ver y dropear bases de datos de otros usuarios, entonces lo mejor es darle una instancia separada. Un caso de esto, que es el origen de este post, es dokeos. Si lo configuramos para usar una misma base de datos hay un problema serio de perdormance, y si lo configuramos para tener múltiples bases de datos los usuarios no pueden acceder luego a ellas.

(más…)