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

Controlar la cantidad de peticiones de una IP hacia el puerto 80

d
Visto en soyadmin
#!/bin/sh
# Comando que realiza el reastreo
nroconn=`netstat -nap |grep “:80″ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n | awk ‘{print $1}’ | tail -1`

# Comando que nos devolverá la ip
ip=`netstat -nap |grep “:80″ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n | awk ‘{print $2}’ | tail -1`

# Limite a superar para informar, esto se puede variar según las necesidades de cada server
limite=100
if [ $nroconn -gt $limite ]; then
mensaje=”Atencion! la IP $ip tiene $nroconn conexiones activas”

# Realizamos el whois sobre la IP
infor=`whois $ip | grep country`
whois=`whois $ip`

# Generamos el correo
mailto=”"
cc_to=”"
bcc_to=”"
while read direccion mode
do
if [ -z "$direccion" -o "${direccion:0:1}" = "#" ] ; then continue; fi
if [ "x$mode" = "xcc" -o "x$mode" = "xCC" ] ; then
cc_to=${cc_to:+${cc_to},}$direccion
else
if [ "x$mode" = "xbcc" -o "x$mode" = "xBCC" ] ; then
bcc_to=${bcc_to:+${bcc_to},}$direccion
else
mailto=${mailto:+${mailto},}$direccion
fi
fi

# Llamamos al archivo donde guardamos las direcciones de correo
done <~/emails
mailto=${mailto:-operator}
cc_to=${cc_to:+"-c $cc_to"}
bcc_to=${bcc_to:+"-b $bcc_to"}
mail ${cc_to} ${bcc_to} -s "Alerta OJO Muchas conexiones SERVER: (nombre de servidor)" ${mailto} >&2 <<-EOM
$mensaje
Dicha IP es de: $infor
WHOIS de $ip
$whois
EOM
fi
Leer más...

Bash Website Backup Script

d
Nombre: backup-sitename.sh
Descripción: Script que permite realizar un backup de un sitio web
Más información del Script en loneshooter
#!/bin/sh
 
# Cron job runs with:
# bash /home/account/backup/backup-sitename.sh
 
SITEDIRNAME="sitename"
DBNAME="account_dbname"
DBUSER="account_name"
DBPASS="password"
BASEBCKPPATH="/home/account/backup"
DATE=$(date -I)
DESTINATIONDIR="$BASEBCKPPATH/$DATE/$SITEDIRNAME" #e.g. /home/account/backup/2012-07-29/sitename
ERRORLOG=$DESTINATIONDIR/error.log
 
# Delete all previous backups
if [ -d "$DESTINATIONDIR" ]; then
  rm -rf $DESTINATIONDIR
fi
 
# Create backup directory if it doesn't exist, e.g. /home/account/backup/2012-07-29/sitename
if [ ! -d "$DESTINATIONDIR" ]; then
  mkdir -p $DESTINATIONDIR
fi
 
# Backup site folder
tar -czf $DESTINATIONDIR/${SITEDIRNAME}_${DATE}.tgz -C /home/account/addon ./$SITEDIRNAME 2> $ERRORLOG
 
# Backup site database
mysqldump -u $DBUSER -p$DBPASS -h localhost $DBNAME| gzip -9 > $DESTINATIONDIR/${DBNAME}_${DATE}.sql.gz 2> $ERRORLOG
Leer más...

Shell Script para analizar Access.log

d
Nombre: webaccess.bash
Autor: Desconocido
Descripción: Script que genera una serie de estadísticas útiles, habida cuenta de un archivo de registro de formato de Apache access_log.
Visto en Linux Party
#!/bin/bash

# webaccess - analyze an Apache-format access_log file, extracting
# useful and interesting statistics

bytes_in_gb=1048576
scriptbc="$HOME/bin/scriptbc"
nicenumber="$HOME/bin/nicenumber"
host="intuitive.com"

if [ $# -eq 0 -o ! -f "$1" ] ; then
echo "Usage: $(basename $0) logfile" >&2
exit 1
fi

firstdate="$(head -1 "$1" | awk '{print $4}' | sed 's/[//')"
lastdate="$(tail -1 "$1" | awk '{print $4}' | sed 's/[//')"

echo "Results of analyzing log file $1"
echo ""
echo " Start date: $(echo $firstdate|sed 's/:/ at /')"
echo " End date: $(echo $lastdate|sed 's/:/ at /')"

hits="$(wc -l < "$1" | sed 's/[^[:digit:]]//g')"

echo " Hits: $($nicenumber $hits) (total accesses)"

pages="$(grep -ivE '(.txt|.gif|.jpg|.png)' "$1" | wc -l | sed 's/[^[:digit:]]//g')"

echo " Pageviews: $($nicenumber $pages) (hits minus graphics)"

totalbytes="$(awk '{sum+=$10} END {print sum}' "$1")"

echo -n " Transferred: $($nicenumber $totalbytes) bytes "

if [ $totalbytes -gt $bytes_in_gb ] ; then
echo "($($scriptbc $totalbytes / $bytes_in_gb) GB)"
elif [ $totalbytes -gt 1024 ] ; then
echo "($($scriptbc $totalbytes / 1024) MB)"
else
echo ""
fi

# now let's scrape the log file for some useful data:

echo ""
echo "The ten most popular pages were:"

awk '{print $7}' "$1" | grep -ivE '(.gif|.jpg|.png)' | 
sed 's//$//g' | sort | 
uniq -c | sort -rn | head -10

echo ""

echo "The ten most common referrer URLs were:"

awk '{print $11}' "$1" | 
grep -vE "(^"-"$|/www.$host|/$host)" | 
sort | uniq -c | sort -rn | head -10

echo ""
exit 0

Permisos: chmod 700 webaccess.bash 
Ejecución: ./webaccess.bash [ log ]
Leer más...

Django Backup Script

d
Nombre: DJANGO BACKUP SCRIPT
Autor: (C) 2009 Guy Rutenberg
Descripción: Script que permite generar un backup del proyecto
Formas de uso
$ django_backup /path/to/my/proj
$ django_backup --db-only /path/to/my/proj
#!/bin/bash
 
# (C) 2009 Guy Rutenberg
# Backup Django sites
 
BACKUP_DIR=
FTP_HOST=
FTP_USER=
FTP_PASS=
FTP_BACKUP_DIR=
 
# end of user configurable section
 
PROG=`basename "$0"`
print_usage () {
    echo "USAGE: $0 [options] PROJ_ROOT"
    echo "Backup a Django project located in PROJ_ROOT"
}
 
print_help ()  {
    print_usage
    cat << EOF
 
Options:
    -h, --help          show this help message and exit
    --db-only           only backup the database
 
EOF
}
 
TEMP=`getopt -o h --long help,db-only -n "$PROG" -- "$@"`
if (($?)); then
    print_usage
    exit 1
fi
 
eval set -- "$TEMP"
 
DB_ONLY=0
while true ; do
    case "$1" in
        -h|--help) print_help; exit ;;
        --db-only) DB_ONLY="1" ; shift ;;
        --) shift; break;;
    esac
done
 
 
 
if [ -z "$1" ]
then
 print_usage > /dev/stderr
 exit 1
fi
 
PROJECT_DIR=$1
 
# extract database variables from settings.py
cd "$PROJECT_DIR"
 
 
DB_ENGINE=`python -c "from settings import *; print DATABASE_ENGINE"`
if [ "$DB_ENGINE" != "mysql" ]; then
 echo $DB_ENGINE
 echo "Only mysql databases are supported!">/dev/stderr
 exit 1
fi
 
DB_NAME=`python -c "from settings import *; print DATABASE_NAME"`
DB_USER=`python -c "from settings import *; print DATABASE_USER"`
DB_PASS=`python -c "from settings import *; print DATABASE_PASSWORD"`
DB_HOST=`python -c "from settings import *; print DATABASE_HOST"`
#TODO find how to use it
DB_PORT=`python -c "from settings import *; print DATABASE_PORT"`
 
# set optional parameters: host, port
HOST_ARGS=''
if [ -n "$DB_HOST" ]; then
 HOST_ARGS="--host $DB_HOST"
fi
 
PORT_ARGS=''
if [ -n "$DB_PORT" ]; then
 PORT_ARGS="--port $DB_HOST"
fi
 
SITE_DIR=`dirname "$PROJECT_DIR"`/`basename "$PROJECT_DIR"`
BACKUP_DIR=`dirname "$BACKUP_DIR"`/`basename "$BACKUP_DIR"`
 
echo -n "dumping database... "
DUMP_NAME=${DB_NAME}-$(date +%Y%m%d).sql.bz2
mysqldump --user=${DB_USER} --password=${DB_PASS} $HOST_ARGS \
 $PORT_ARGS --databases ${DB_NAME} \
 | bzip2 -c > ${BACKUP_DIR}/${DUMP_NAME}
if (($?)); then
	echo "failed!"
	exit 1
fi
echo "done"
 
PUT_TARBALL_FTP=""
if [ "$DB_ONLY" -eq "0" ]; then
	echo -n "Creating tarball... "
	TAR_NAME=${SITE_DIR##*/}-$(date +%Y%m%d).tar.bz2
	tar -cjf ${BACKUP_DIR}/${SITE_DIR##*/}-$(date +%Y%m%d).tar.bz2 ${SITE_DIR}
	if (($?)); then
		echo "failed!"
		exit 2
	fi
	echo "done"
	PUT_TARBALL_FTP="put \"${BACKUP_DIR}/${TAR_NAME}\""
fi
 
echo -n "Uploading backup to FTP... "
 
lftp -u ${FTP_USER},${FTP_PASS} ${FTP_HOST} 
Leer más...

Script Python para respaldar base de datos en Postgrtesql

d
Autor: Carlos Garcia
Descripción: Script en python que permite hacer un respaldo de una base de datos que reside en PostgreSql

Este archivo se ejecuta de la siguiente manera:

$ python respaldo.py

Para Restaurar la Base de Datos: -d Nombre Base Datos -U Usuario
pg_restore -d db -U postgres db.tar

#!/usr/bin/env python
import time
import datetime
import os


def nombre_archivo():
    '''
    Permite Crear el nombre del archivo que tendra el respaldo
    tomando como nombre la fecha dd-mm-aa y la hora hh:mm:ss
    Quedando de la siguiente manera suponiendo que fue realizado
    en la siguiente fecha (24/12/2011 10:30:00) , el resultado seria
    el siguiente: 24_12_2011_103000

    t = time.localtime()
    dia = t.tm_mday
    mes = t.tm_mon
    ano = t.tm_year

    hora = t.tm_hour
    minutos = t.tm_min
    seg = t.tm_sec

    nombre = '%s-%s-%s_%s:%s:%s' % (dia, mes, ano, hora, minutos, seg)
    '''

    t = datetime.datetime.now()
    nombre = t.strftime('%d_%m_%Y_%I%M%S')
    return nombre


def leer_config():
    '''
    Toma los valores del archivo de configuracion llamado config.cfg y los
     guarda en un diccionario {clave:valor} el cual retorna al finalizar.
    Informacion del archivo config.cfg:

    ipservidor=10.121.6.4
    nombrebasedatos=bdhcoromoto
    usuariobasedatos=admhc
    rutarespaldo=/media/respaldo
    nombrearchivo=pg_bdhcoromoto_
    '''
    diccionario = {}
    ruta = "/home/cgarcia/desarrollo/python/respaldo-potgres/config/config.cfg"
    for linea in file(ruta):
        if linea[0] != '#':
            separar = linea.split('=')
            if len(separar) > 1:
                dicc_clave = separar[0]
                dicc_valor = separar[1].rstrip()  # rstrip elimina el retor d c
                diccionario[dicc_clave] = dicc_valor
    return diccionario


def respaldo_pg():
    '''
    Toma los parametros del diccionario con el cual se arma el nombre y
    la ruta que tendra el archivo del respaldo asi como tambien arma
    el comando final a ejecutar
    '''

    diccio = leer_config()
    dic_ipservidor = diccio['ipservidor']
    dic_nombrebasedatos = diccio['nombrebasedatos']
    dic_usuariobasedatos = diccio['usuariobasedatos']
    dic_rutarespaldo = diccio['rutarespaldo']
    dic_nombrearchivo = diccio['nombrearchivo']

    archivofinal = os.path.join(dic_rutarespaldo, dic_nombrearchivo + \
     nombre_archivo() + '.tar')
    comando = 'pg_dump'

    '''
    -Parametros a pasar(Estos tambien se pudieran colocar dentro del
    archivo config.cfg),
    - pero por ahora lo dejaremos asi directo como texto
    -Ft Significa Format tar
    -b Inclute campos Blobs
    -h es el host o la ip del servidor
    -W password
    '''
    comando_a_ejecutar = '%s -Ft -b -h %s %s -U %s > %s' % \
        (comando, dic_ipservidor, dic_nombrebasedatos, dic_usuariobasedatos,\
         archivofinal)
    return comando_a_ejecutar

if __name__ == '__main__':
    print 'Espere un momento ejecutando Proceso de Respaldo...'
    respaldar = respaldo_pg()
    print respaldar
    os.system(respaldar)
    print '*** Respaldo Realizado con Exito ***'
Leer más...

Envio de email cuando cambia tu IP en linux

d
Nombre: Password.pl
Autor: Caymcorp
Descripción: El script se encarga de comprobar cuál era tu dirección ip antes de ejecutarse y, si ha cambiado, te envía un correo con la nueva. La dirección de correo antigua se guarda en el fichero /etc/myip,
Visto en Caymcorp

Requerimientos.


  • sendEmail
  • El paquete knetfilter, que nos proporciona el comando getip
  • Un servidor smtp al que mandar los correos 
La automatización para el envio se puede usar el amigo CRON

#!/bin/bash

FCONF=/etc/myip
MAIL=tu_direccion_de_correo
SERVER=servidor_smtp

# Get your ip
ip=`getip eth0 | head -n 1 | cut -d ":" -f 2`;
# Get your old ip
oldip=`head -n 1 $FCONF`

# If ip has changed, send email
# and save new ip in config file
if [ $ip != $oldip ];
then
	sendEmail -f $MAIL -t $MAIL -u "Your ip: ${ip}" -m " " -s $SERVER
	echo $ip > $FCONF;
fi
Necesitamos crear el archivo myip en /etc y asignar permisos.

sudo touch /etc/myip
sudo chmod a+w /etc/myip
Leer más...

WordPress Backup Script

d
Nombre: WordPress Backup
Autor: Guy Rutenberg
Descripción: Script que automatiza y permite generar Backup de Wordpress
Visto en Guy Rutenberg
#!/bin/bash
# (C) 2008 Guy Rutenberg - http://www.guyrutenberg.com
# This is a script that creates backups of blogs.
 
DB_NAME=
DB_USER=
DB_PASS=
DB_HOST=
 
#no trailing slash
BLOG_DIR=
BACKUP_DIR=
 
 
echo -n "dumping database... "
mysqldump --user=${DB_USER} --password=${DB_PASS} --host=${DB_HOST} ${DB_NAME} \
 | bzip2 -c > ${BACKUP_DIR}/${DB_NAME}-$(date +%Y%m%d).sql.bz2
if [ "$?" -ne "0" ]; then
	echo -e "\nmysqldump failed!"
	exit 1
fi
echo "done"
 
 
echo -n "Creating tarball... "
tar -cjf ${BACKUP_DIR}/${BLOG_DIR##*/}-$(date +%Y%m%d).tar.bz2 ${BLOG_DIR}
if [ "$?" -ne "0" ]; then
	echo -e "\ntarball creation failed!"
	exit 1
fi
echo "done"
Leer más...

Script de backups para MySQL

d
Autor: @NerdChileno

Descripción: Crea backups comprimidos para cada una de las bases de datos en el motor.

#!/bin/sh
# 
# syslock.cl
# Copyright GPL V.3
# 06/03/2010
# Version: 1.0.10
#
# ---------------------------------------------------------------------
 
# 
NOW="$(date +"%Y%m%d")"
MyUSER="" #USUARIO 
MyPASS=""       # PASSWORD
MyHOST="localhost"          # HOST
 
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
DEST="/home/mysqldump/unaxuna" #DIR DE DESTINO 
MBD="$DEST/$NOW"
HOST="$(hostname)"
 
FILE=""
DBS=""
 
OMITE="test" # OMITIR BASE PARA RESPALDO
 
[ ! -d $MBD ] && mkdir -p $MBD || :
 
$CHOWN 0.0 -R $DEST
$CHMOD 0600 $DEST
 
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
 
for db in $DBS
do
    skipdb=-1
    if [ "$OMITE" != "" ];
    then
        for i in $OMITE
        do
            [ "$db" == "$i" ] && skipdb=1 || :
        done
    fi
 
    if [ "$skipdb" == "-1" ] ; then
        FILE="$MBD/$NOW.$db.gz"
        $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
    fi
done



Leer más...

Script to Install and Secure Apache2 PHP5 MySQL5 in Ubuntu/Debian

d
Autor: @Desconocido
Descripción: Script que permite instalar de manera automática, y configurar Apache2 PHP y Mysql

MYSQL_PASS="YOUR_PASSWORD_HERE";

echo "+Updating apt-get..."
apt-get update

echo "+Installing SSH..."
apt-get install -q -y ssh

echo "+Changing default SSH port..."
sed -i 's/Port 22/Port 28/' /etc/ssh/sshd_config
/etc/init.d/ssh restart

echo "+Installing Apache2..."
apt-get install -q -y apache2
sed -i 's/ServerTokens Full/ServerTokens Prod/' /etc/apache2/conf.d/security
sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf.d/security
sed -i 's/TraceEnable On/TraceEnable Off/' /etc/apache2/conf.d/security
/etc/init.d/apache2 reload
a2enmod rewrite
/etc/init.d/apache2 restart

echo "+Installing PHP5..."
apt-get install -q -y php5
echo "+Securing PHP.ini file..."
sed -i 's/disable_functions =/disable_functions = show_source, system, exec/' /etc/php5/apache2/php.ini
sed -i 's/expose_php = On/expose_php = Off/' /etc/php5/apache2/php.ini
sed -i 's/display_errors = On/display_errors = Off/' /etc/php5/apache2/php.ini
sed -i 's/log_errors = Off/log_errors = On/' /etc/php5/apache2/php.ini
sed -i 's/allow_url_fopen = On/allow_url_fopen = Off/' /etc/php5/apache2/php.ini

echo "+Installing MySQL Server..."
DEBIAN_FRONTEND='noninteractive' apt-get install -q -y mysql-server
mysqladmin -u root password $MYSQL_PASS
apt-get install -q -y php5-mysql
mysql_secure_installation

history -c

echo "+Installation Completed!"

Fuente: Unixmen
Leer más...

Script para mostrar listado de Usuarios de un grupo

d
Autor : @Desconocido
Descripción: Script que muestra el grupo con mayor cantidad de usuarios, y el nombre de los usuarios.

#! /bin/bash
if test $# -ge 1
   then
      echo "Este Script no necestia parametros"
   exit 0
   else
ypcat passwd | awk -F: ' NR > 1 { vec[$4] +=1}
         END { VAN=1
            for (x in vec)
               if (VAN==1)
               {MAYOR=vec
;
               GRUPO=x;
               VAN=0}
               else
               if (MAYOR < vec
)
                  {MAYOR=vec
;
                   GRUPO=x;}
               print  GRUPO" " MAYOR+1
         }' > borrar

VAR1=`cat borrar | cut -d" " -f1`
VAR2=`cat borrar | cut -d" " -f2`
VAR3=`ypcat group | grep $VAR1 | cut -d":" -f1`
echo " El grupo $VAR3 tiene la mayor cantidad de usuarios con un total de 
$VAR2"
rm borrar
exit 0
fi
Leer más...

SCRIPT PARA INFORMACION DEL SISTEMA, REDHAT

d
Autor: @Desconocido
Descripción: Script que permite sacar un Reporte del Sistema, para un Reporte de Procesos, para un Reporte de Usuarios .

#! /bin/bash
if test $# -ge 1
then
echo "Este Script no utiliza parametros"
exit 0
else
clear
while true
do
echo "         **********************************************"
echo "         *                                            *"
echo "         *      Seleccione una accion a realizar      *"
echo "         *                                            *"
echo "         **********************************************"
echo "         *                                            *"
echo "         *  Presione (A) para un Reporte del Sistema  *"
echo "         *  Presione (B) para un Reporte de Procesos  *"
echo "         *  Presione (C) para un Reporte de Usuarios  *"
echo "         *  Presione (X) para salir                   *"
echo "         *                                            *"
echo "         **********************************************"
read op
clear

#VARIABLES DE ENTORNO UTILIZADAS EN A)
   #Tamaño del File System expresado en Kbytes
   TAM_FS=`df -l --block-size=1024 | awk 'BEGIN{cant=0} {cant+=$2} END{print 
"Tamaño del file system: "cant}'`

   #Porcentaje del disco usado
   PORC_DISCO_USAD=`df -l | awk 'BEGIN{cant=0} {cant+=$5} END{print 
"Porcentaje del disco utilizado: "cant, "\tLibre: "100-cant}'`

   #Tamaño del directorio actual
   TAM_DIR_AC=`ls -l --block-size=1024 | awk 'BEGIN{cant=0} {cant+=$5} 
END{print cant}'`

   #Cantidad de archivos en el dir actua
   CANT_ARCH_DIR_AC=`ls -l | cut -f1 -d" " | grep ^-......... | awk 'END{print 
NR}'`

   #Cantidad de subdirectorios en el dir actual
   CANT_SUBDIR_AC=`ls -l | cut -f1 -d" " | grep ^d......... | awk 'END{print 
NR}'`

   #Fecha del reporte
   FCHA_REP=`date '+Fecha del reporte: %d/%m/%y'`






   #VARIABLES DE ENTORNO UTILIZADAS EN B)
   #Cantidad de procesos en ejecucion
   

CANT_PROC_EJEC=`ps -aux | wc -l`

   #Tamanio total de la memoria
   TAM_TOT=`free -t | cut -f2 -d":" | cut -d" " -f7 | sort | awk 'END{print}'`

   #Porcentaje de memoria utilizada
   TAM_MEM_USA=`ps -aux | awk 'BEGIN{cant=0} {cant+=$4} END{print "Porcentaje 
de memoria utilizado: "cant, "\tLibre: "100-cant}'`

   #Uso de CPU
   USO_CPU=`ps -aux | awk 'BEGIN{cant=0} {cant+=$3} END{print "Uso de CPU: 
"cant}'`

   #Usuario que utiliza mayor cantida de memoria
   MEM_USU=`ps -aux | awk  ' NR > 1 { vec[$1] +=$4}
         END { VAN=1
            for (x in vec)
               if (VAN==1)
               {MAYOR=vec
;
               GRUPO=x;
               VAN=0}
               else
               if (MAYOR < vec
)
                  {MAYOR=vec
;
                   GRUPO=x;}
            print  "El Usuario que usa mayor cantidad de memoria: " GRUPO
         }'`

   #Usuarios con mayor cantidad de procesos
   CANT_PROC=`ps -aux | awk  ' NR >1  { vec[$1] +=1}
         END { BAN=1
            for (x in vec)
               if (BAN==1)
               {MAYOR=vec
;
               GRUPO=x;
               BAN=0}
               else
               if (MAYOR < vec
)
                  {MAYOR=vec
;
                   GRUPO=x;}
            print  "Usuario con mayor cantidad de procesos: " GRUPO " con " MAYOR " 
procesos"
         }'`


#VARIABLES DE ENTORNO UTILIZADAS EN C)
   #Cantidad total de usuarios
   


   CANT_USER_TOT=`ypcat passwd | awk 'END{print NR}'`

   #Cantidad de usuarios logueados
   CANT_USER_LOG=`who | cut -f1 -d" " | sort | uniq | awk 'END{print NR}'`


   #El usuario con que lleva mas tiempo logueado
   USER_MAS_LOG=`who | awk '{ print $5 "\t"$1}' | sort | awk ' NR==1 ' | cut 
-f2`

#COMIENZA EL MENU DE OPCIONES
case $op in
#EMPIEZA A EJECUTAR A
   A|a)
echo "        A)"
echo "         **********************************************************"
echo "         *            Reporte del Sistema de Archivos             *"
echo "              
*--------------------------------------------------------*"
   echo "         * $TAM_FS                         *"
echo "              *                                    *"
echo "              * $PORC_DISCO_USAD      *"
echo "              *                                                        
*"
echo "         * Tamaño del directorio actual: $TAM_DIR_AC (Kbytes)           
*"
echo "              *                                                        
*"
echo "              * Cantidad de archivos en el directorio actual: 
$CANT_ARCH_DIR_AC        *"
echo "              *                                                        
*"
echo "              * Cantidad de sub-directorios en el directorio actual: 
$CANT_SUBDIR_AC *"
echo "              
*--------------------------------------------------------*"
echo "              * $FCHA_REP                            *"
echo "              
**********************************************************"
sleep 12
;;
#TERMINA DE EJECUTAR A

#EMPIEZO A EJECUTAR B
   B|b)
echo "        B)"
echo "         
******************************************************************"
echo "         *                      Reporte de Procesos                      
  *"

echo "              
*----------------------------------------------------------------*"
echo "              * Cantidad de procesos en ejecucion:$CANT_PROC_EJEC      
                 *"


echo "              *                                                        
         *"
echo "              * Tamaño total de la memoria:$TAM_TOT                    
            *"
echo "              *                                                        
         *"
echo "              * $TAM_MEM_USA            *"
echo "              *                                                        
         *"
echo "              * $USO_CPU                                               
  *"
echo "              *                                                        
         *"
echo "              * $MEM_USU           *"
echo "              *                                                        
         *"
echo "              * $CANT_PROC   *"
echo "              
*----------------------------------------------------------------*"
echo "              * $FCHA_REP                                    *"
echo "              
******************************************************************"
sleep 12;;
#TERMINO DE EJECUTAR B

#EMPIEZO A EJECUTAR C
   C|c)
echo "        C)"
echo "         
******************************************************************"
echo "         *                      Reporte de Usuarios                      
  *"
echo "              
*----------------------------------------------------------------*"
echo "              * Cantidad total de usuarios: $CANT_USER_TOT             
                    *"
echo "              *                                                        
         *"
echo "              * Cantidad de usuarios logueados: $CANT_USER_LOG         
                      *"
echo "              *                                                        
         *"
echo "              * El usuario que lleva mas tiempo logueado: 
$USER_MAS_LOG               *"
echo "              
*----------------------------------------------------------------*"
echo "              * $FCHA_REP                                    *"
echo "              
******************************************************************"
sleep 12;;

#EMPIEZA A EJECUTAR X
   X|x) echo "Fin del programa"
           break
           sleep 1;;
   *) echo "opcion incorrecta"
      sleep 1;;
   esac
clear
done
exit 0
fi
Leer más...

Script para Enviar IP vía Mail

d
Autor: @Desconocido
Descripción: Este script comprueba la dirección IP pública de un PC y la envia a una dirección de correo.
Es útil si tiene el PC con una conexión a internet sin IP fija y se quiere conectar a él remotamente.
Puede ejecutarlo directamente con: ./mailip.sh o añadir la siguiente linea en un script de inicio: nohup mailip.sh &>/dev/null & Para ejecutarlo, primero debe modificar las variables del principio del script con sus datos de correo.
#!/bin/bash

# mailip.sh

# Script designed to read your public IP address from www.whatismyip.org
# at intervals and notify any changes by sending an email for you.

# wget and sendEmail with tsl support must be installed on your system.

# Usage:  mailip.sh  (if it can be found in your session environment PATH)
# or if you want to run it on the background:  nohup mailip.sh &>/dev/null &

# Please, you must modify the next variables to suit your needs:

DELIVER=an_account@gmail.com  # An account to send the email with the ip.
RECEIVE=$DELIVER  # An account to get the email. Don't modify to send it to the same address you especified above.
SMTP_SERVER=server.address.com:port  # The smtp server's port of the emailer account. Example: smtp.gmail.com:587
MAIL_USER=account-user
MAIL_PASS=UseR.p4s5vooRd-
TLS=yes  # yes|no    Does the mail server accept/require TLS or SSL encryption?

# The script starts here.

PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin  # paranoia
READ_IP()
{
wget -q -t 4 --no-proxy --no-cache --no-cookies -o /dev/null -O /var/publicip http://www.whatismyip.org
if [ $? -ne 0 ] ; then sleep 5m ; READ_IP ; fi
}
SEND_IP()
{
sendEmail -q -f $DELIVER -t $RECEIVE -u $SUBJECT -m $MESSAGE -s $SMTP_SERVER -xu $MAIL_USER -xp $MAIL_PASS -o tls=$TLS
if [ $? -ne 0 ] ; then sleep 5m ; SEND_IP ; fi
}

if [ $DELIVER == an_account@gmail.com ]
then echo ; echo "  Warning!  You must carefully edit some variables of the script first of all." ; echo
else
  if [ ! -e /var/publicip-sent ]
  then echo 0 > /var/publicip-sent
  fi
  while true
  do READ_IP ; sleep 12s ; sync  # paranoia
    if [ `cat /var/publicip` != `cat /var/publicip-sent` ]
    then
    SUBJECT=`hostname ; echo "IP changed:" ; cat /var/publicip`
    MESSAGE=`cat /var/publicip ; echo ; date +%F\ %T`
    SEND_IP && mv /var/publicip /var/publicip-sent
    else rm /var/publicip
    fi
  sleep 60m
  done
fi

# That was all.

# Perhaps you didn't like having to type your email password directly in the script,
# a workaround could be to assign a value like MAIL_PASS=`cat ~/password.txt` , then
# write a file called ~/password.txt with only the password in it and run the script.
# Don't forget that the password plain text file should only be readable by you,
# modificate it's permissions with chmod if needed.
Leer más...

Apagar el PC en una hora determinada

d
Bueno quien no quisiera usar este script al irse del trabajo dejar programado y que se apague solito =)


#!/bin/sh
clear
echo "****Bienvenido al Sitema de Apagado Automatico****"
echo "GeekScripting"
echo ""
echo "MENU"
echo " 1.-Apagar PC ahora"
echo " 2.-Reiniciar PC ahora"
echo " 3.-Apagar PC en un ahora determinada"
echo " 4.-Apagar PC en un lapso determinado"
echo " 5.-Salir"
echo ""
read -p "Seleccionar Opcion: " OPCION
case $OPCION in
1) sudo halt;;
2) sudo reboot;;
3) echo -n "Ingresa la hora de apagado: "
read hora
sudo shutdown -h $hora;;
4)echo -n "Ingresa el numero de minutos, tras cual el PC se apagara: "
read minutos
sudo shutdown -h $minutos;;
5) exit;;
*) echo "Usted ingreso una opcion que no esta en el menu"
exit 1;;

Para darle un buen uso agregarlo a sus alias, y darle permisos de ejecucion ($ chmod 755 *.sh)
Leer más...

Script para levantar como servicio RED5

d
Autor: Sohail Riaz
Descripción: Script que permite levantar como servicio en Fedora/CentOS/RedHat el servidor de RED5. RED5 es un potentisimo servidor de contenidos en flash y en streaming desarrollado en Java y Open Source.

#!/bin/bash
# For RedHat and cousins:
# chkconfig: 2345 85 85
# description: Red5 flash streaming server
# processname: red5
# Created By: Sohail Riaz (sohaileo@gmail.com)

PROG=red5
RED5_HOME=/usr/local/red5
DAEMON=$RED5_HOME/$PROG.sh
PIDFILE=/var/run/$PROG.pid

# Source function library
. /etc/rc.d/init.d/functions

[ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5

RETVAL=0

case "$1" in
 start)
 echo -n $"Starting $PROG: "
 cd $RED5_HOME
 $DAEMON >/dev/null 2>/dev/null &
 RETVAL=$?
 if [ $RETVAL -eq 0 ]; then
  echo $! > $PIDFILE
  touch /var/lock/subsys/$PROG
 fi
 [ $RETVAL -eq 0 ] && success $"$PROG startup" || failure $"$PROG startup"
 echo
 ;;
 stop)
 echo -n $"Shutting down $PROG: "
 killproc -p $PIDFILE
 RETVAL=$?
 echo
 [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROG
 ;;
 restart)
 $0 stop
 $0 start
 ;;
 status)
 status $PROG -p $PIDFILE
 RETVAL=$?
 ;;
 *)
 echo $"Usage: $0 {start|stop|restart|status}"
 RETVAL=1
esac

exit $RETVAL
Leer más...

Monitorear acceso de usuarios de linux

d
Autor: @eljeffto
Descripción: Script para monitorear el acceso de usuarios a máquinas linux a través de cualquier medio (Consola, TTY, Sesión gráfica, etc.). El correo es enviado a través de una conexión por telnet al servidor de correo, existen otras formas de realizarlo a través de la librería smtplib de python, con perl o con la función mail de sendmail, depende de lo que se tenga, este es para un caso básico
Fuente: eljeffto

#!/bin/bash

ASUNTO="Acceso de usuario:"
FECHA=$(date)
IP=$(who | cut -d"(" -f2 | cut -d")" -f1)
SERVIDOR= #ip o dominio del servidor de correo
PUERTO=#puerto de conexión SMTP o SMTPS con el servidor de correo
REMITENTE=#correo existente de quien envia
DESTINATARIO=#correo existente de quien recibirá

telnet $SERVIDOR $PUERTO <<_EOF
HELO $SERVIDOR
MAIL FROM:<$REMITENTE>
RCPT TO:<$DESTINATARIO>
DATA
From: <$REMITENTE>
To: <$DESTINATARIO>
Subject: $ASUNTO - $FECHA

Se ha identificado un acceso por parte del usuario __indique-aqui-el-usuario__

Acceso desde $IP

.
QUIT
_EOF

NOTA del AUTOR: En caso de necesitar la autenticación del usuario es necesario revisar si la autenticación es AUTH PLAIN, AUTH LOGIN, recordando que se debe pasar el correo y el password bajo codificación BASE64.
Leer más...

Script Bash para Gestionar Servicios

d
Autor: @danielmichele

Fuente: danieldemichele.com.ar
Descripción :
Las operaciones de control a realizar antes de ejecutar el comando  2:
1) El script debía verificar que quien lo ejecutara fuera Root, de otro modo a rootearse.
2) Además, necesitaba verificar que el servicio pasado como primer flag fuese un archivo existente de hecho en /etc/init.d/

Nota: Para correr se debe de hacer lo siguiente services mysql restart
#!/bin/bash
# Tiny scripts to make your life a bit easier by carp (www.danieldemichele.com.ar)

# Only allow to run script if Root
if [[ $EUID -ne 0 ]];
   then
   echo "Permisos insuficientes. Corra este script como Root!" 1>&2
   exit 1
   
   else
   
        #Check if service exists
        if [ -f /etc/init.d/$1 ]
        then
        # We do have a service, lets shoot the Flag (System will give valid options if bad Flag):
        exec  /etc/init.d/$1 $2 
        
        else
        # No Service at init.d, return error ...
        echo "El servicio "$1" no existe en /etc/init.d/";
        fi

fi

Aqui pueden ver el script realizado en Perl.
Leer más...

Script Perl para Gestionar Servicios

d
Autor: @danielmichele

Fuente: danieldemichele.com.ar

Descripcion:
Las operaciones de control a realizar antes de ejecutar el comando  2:
1) El script debía verificar que quien lo ejecutara fuera Root, de otro modo a rootearse.
2) Además, necesitaba verificar que el servicio pasado como primer flag fuese un archivo existente de hecho en /etc/init.d/

Nota: Pa correr se debe de hacer lo siguiente services mysql restart
#!/usr/bin/perl
# Tiny scripts to make your life a bit easier by carp (www.danieldemichele.com.ar)

# Get Flags:
$service = $ARGV[0];
$task = $ARGV[1];

# Only allow to run script if Root
if ( $< == 0 ){

#Check if service exists
$requested_service = '/etc/init.d/'.$service;

    if(!(-e $requested_service)){
    # No Service at init.d, return error ...
    print "El servicio ".$service." no existe en /etc/init.d/\n";
    }else{
    # We do have a service, lets shoot the Flag (System will give valid options if bad Flag):
    system "/etc/init.d/".$service." ".$task;
    }

}else{
# No Root? =(
print "Permisos insuficientes. Corra este script como Root!.\n";  
}

Script realizado en Bash pueden verlo aqui
Leer más...

Como descomprimir archivos CSS

d
Autor: Daniel M. Maldonado
Descripcion: La idea es descomprimir un archivo CSS de tal manera que sea posible visualizarlo mucho más prolijo

Instrucciones Primero se recomienda descargar el css como este ejemplo

$ wget http://www.ellibertario.com/wp-content/w3tc/min/9a6f1138.444a95.css

Posteriormente hacemos uso del siguiente comando

$ cat 9a6f1138.444a95.css | sed -e 's/}/}\n\n/g' | less 

La idea general es reemplazar los caracteres “}” que sabemos que cierran bloques de definición en los css por uno o dos simples saltos de líneas “}\n\n” Para generar un archivo nuevo solo quedaría redireccionar la salida a un nuevo archivo css y comenzar a leerlo y ver cada detalle del archivo.

$ cat 9a6f1138.444a95.css | sed -e 's/}/}\n\n/g' > nuevo.css

Correo: dmaldonado@elcodigok
Twitter: @elcodigok
Leer más...

Como descomprimir un archivo CSS Versión [mejorada]

d
Autor: Daniel M. Maldonado 
Descripcion: La idea es descomprimir un archivo CSS de tal manera que sea posible visualizarlo mucho más prolijo 

 Version Anterior

Del mismo modo que el anterio primero procedemos a bajarlo.

$ wget http://www.ellibertario.com/wp-content/w3tc/min/9a6f1138.444a95.css

Posteriormente hacemos uso del siguiente comando

$ cat 9a6f1138.444a95.css | sed -e 's/}/\n}\n\n/g' | sed -e 's/{/{\n\t/g' | sed -e 's/;/;\n\t/g' | less

Ahora nuevamente envés de paginarlo en la salida estandar lo redireccionamos a un nuevo archivo.
$ cat 9a6f1138.444a95.css | sed -e 's/}/\n}\n\n/g' | sed -e 's/{/{\n\t/g' | sed -e 's/;/;\n\t/g' > estilo_nuevo.css

Correo: dmaldonado@elcodigok
 Twitter: @elcodigok
Leer más...

Script para buscar direcciones IP en páginas html

d
Autor: @paco_medina
Función: Recibe como parámetro una URL y muestra en pantalla las direcciones IP que contenga.
#!/bin/bash
# Programa que busca direcciones IP en páginas html
# Autor: @paco_medina
if [ $# -lt 1 ]; then
echo "Uso: $0 url"
echo "Ejemplo: $0 www.sitio.com.mx"
exit 1
fi
HTML=/tmp/pagina.html
DOMINIO=`echo $1|cut -d. -f2-5`
wget $1 -O $HTML -o /dev/null
grep "href=" $HTML |grep $DOMINIO |
cut -d/ -f3|grep ${DOMINIO}$|sort -u>/tmp/dir-ip
for i in $(cat /tmp/dir-ip)

do
host $i
done
rm $HTML
Leer más...