Showing posts with label shell. Show all posts
Showing posts with label shell. Show all posts

Wednesday, October 2, 2013

BASH: Buscar el día anterior al día provisto.

Este pequeño "if" es muy útil. El mismo calcula el día anterior de la fecha provista (formato YYYYmmDD) y si no se le provee ninguna automáticamente le asigna el día de hoy y el de ayer a las variables pertinentes.


#!/bin/bash

#Si el parametro $1 NO viene vacio
if [ ${#1} != 0 ]
then
        #Entonces TIMESTAMP es igual al valor de $1
        TIMESTAMP=$1

        #ONEDAYBEFORE es un dia antes del dia provisto
        ONEDAYBEFORE=$(date -d "$1 - 1 day" "+%Y%m%d")
else
        #De lo contrario TIMESTAMP sera el dia de hoy
        TIMESTAMP=`date +"%Y%m%d"`
        
        #ONEDAYBEFORE sera el dia de ayer
        ONEDAYBEFORE=`date --date="yesterday" "+%Y%m%d"`
fi

Utilidad:
Supongamos que diariamente tienes que generar un reporte que compare el día de ayer con el de hoy. La ventaja que provee este if es la flexibilidad de poder ejecutar este script tanto manual como automáticamente, osea, puedes ponerle una fecha en el pasado y obtendrá el día anterior al provisto.

Monday, June 3, 2013

BASH: Como encontrar el primer y último día del mes anterior.

Hoy tuve que hacer un script para generar un reporte que contenga información del mes pasado completo. 

Para encontrar el primer día del mes pasado utlizamos este comando:


$ date -d "$(date -d `date +%Y-%m-%d` +%Y-%m-01) -1 month" +%Y-%m-%d
2013-05-01 
Para encontrar el último día del mes pasado utlizamos este:


$ date -d "$(date -d `date +%Y-%m-%d` +%Y-%m-01) -1 day" +%Y-%m-%d
2013-05-31 
Si deseas hacerlo para el mes corriente seria de la siguiente manera:

$ date -d `date +%Y-%m-%d` +%Y-%m-01
2013-06-01
$ date -d "$(date -d `date +%Y-%m-%d` +%Y-%m-01) +1 month -1 day" +%Y-%m-%d
2013-06-30
*Esto fue probadocon BASH shell en RedHat 6

Wednesday, December 12, 2012

Script: Automatizar envio de archivos por FTP

"Si tienes que hacer una tarea más de una vez, haz un script".  

Aqui verás un ejemplo de Shell Script que envía por FTP todos los archivos del día de hoy  encontrados en una carpeta en específico.

#!/bin/sh

#IP donde te quieres conectar
HOST='192.168.0.10'

#Usuario de conexion
USER='ftpuser'

#Contrasena del usuario
PASSWD='ftppass'

#Path donde quieres buscar los archivos
PATH='/home/ftpuser/reports'

#Path donde los depositaras
DESTINATION='/destinationserver/destinationfolder'


#Busca todos los archivos en $PATH donde la fecha de modificacion (-ctime) sea# 0 = hoy. Por cada archivo que encuentres (while read LINE).
#Conectate al host y deposita el archivo (put $LINE)

find $PATH -type f -ctime 0 | while read LINE  
do
        ftp -n $HOST <<END_SCRIPT
        quote USER $USER
        quote PASS $PASSWD
        cd $DESTINATION
        put $LINE
        quit
END_SCRIPT
done
Recuerda ajustar los niveles de seguridad del script de acuerdo a tu necesidad y ponerlo en tu crontab.