Está en la página 1de 8

===========buscar teletrabajos================ Script simple #!/bin/sh path=/etc/openvpn*/teletrabajos*/ log=/var/log/openvpn*.

log* printf "Teletrabajo: \t ultima conexion:\n------------- --------------------------\n" for teletrabajo in $(ls -l $path awk '{print $9}'); do u_conexion=$(grep $teletrabajo $log grep -i "status=1" tail -1 awk '{p rint $2 " " $3 " " $4" " $5'}) if [ -n "$u_conexion" ]; then long=$(expr length $teletrabajo) if (($long < 7)); then printf "$teletrabajo \t\t $u_conexion \n" else printf "$teletrabajo \t $u_conexion \n" fi else long=$(expr length $teletrabajo) if (($long < 7)); then printf "$teletrabajo \t\t No encontrado \n" else printf "$teletrabajo \t No encontrada\n" fi fi done Script un poco mas complejo Asignar permisos de ejecucion a los dos scripts con chmod +x ./*.sh Las variables r1 y r2 debern ser modificadas y escribir las ips por donde se conec tan los teletrabajos. el resultado es un "nombre de hosts".tar que contiene vari os archivos. Pasa saber cuales son los routers por donde se conectan lso teletrabajos ejecuta r la siguiente linea: -f2 grep "(via " /var/log/openvpn* sort uniq cut -d"(" -f2 cut -d")" -f 1 cut -d" "

La cual devuelve las ips por donde entraron las conexiones. #!/bin/sh nombre_script=busca_teletrabajos.sh path=/etc/openvpn*/teletrabajos*/ log=/var/log/openvpn*.log* ruta_keys=/etc/openvpn*/easy-rsa/keys/ #variables modificables #tele_prueba=ibm_user103 nombre_serv=$(hostname) r1=IP de uno de los routers r2=IP de uno de los routers var_no_en="No encontrado"

#variables modificables #inicializar archivos $(echo "" > $nombre_script.encontrados.txt) $(echo "" > $nombre_script.noencontrados.txt) #inicializar archivos printf "Teletrabajo: \t ip ingreso: \t fecha creacion: tipo: \t \n----------- --------------- ------------------ ------------\n" > : : : : : : $nombre _script.noencontrados.txt printf "Teletrabajo: \t ultima conexion: \t ip por donde entro: \t fecha de creacion: tipo: \t \n------------- ---------------------- : : : : : : : --------------------- --------------------- ------------\n" > $nombre_script.enc ontrados.txt printf "Teletrabajo: \t ultima conexion: \t ip por donde entro: \t fecha de creacion: tipo: \t \n------------- ---------------------- : : : : : : : --------------------- --------------------- ------------\n" > $nombre_script.txt #printf "Teletrabajo: \t ultima conexion: \t ip por donde entro: \t fecha de creacion: tipo: \t \n------------- ---------------------- : : : : : : : --------------------- ---------------------- ------------ \n" for teletrabajo in $(ls -l $path awk '{print $9}'); do u_conexion=$(grep $teletrabajo $log grep -i "status=1" tail -1 awk '{p rint $2 " " $3 " " $4" " $5}') ip_conexion=$(grep $teletrabajo $log grep "Peer Connection Initiated" gr ep -i "(via" tail -1 awk '{print $13 " " $14}') fecha_creacion=$(ls -l $ruta_keys grep $teletrabajo grep .crt tail -1 awk '{print $6 " " $7 " " $8}') #diferenciar vpn de teletrabajo tipo=$(head -n 2 $path$teletrabajo tail -1 awk {'print $1'}) tipo_t= if [ "$tipo" == 'iroute' ]; then tipo_t='VPN' else tipo_t="TeleTrabajo" fi #diferenciar vpn de teletrabajo printf "." if [ -n "$u_conexion" ]; then long=$(expr length $teletrabajo) if (($long < 7)); then # printf "$teletrabajo \t\t $u_conexion \t $ip_conexion \t $fecha_creacion \ t $tipo_t \n" printf "$teletrabajo \t\t $u_conexion \t $ip_conexion \t $fecha_creacion \t $tipo_t \n" >> $nombre_script.encontrados.txt else # printf "$teletrabajo \t $u_conexion \t $ip_conexion \t $fecha_creacion \t $tipo_t \n" printf "$teletrabajo \t $u_conexion \t $ip_conexion \t $fecha_creacion \t $t ipo_t \n" >> $nombre_script.encontrados.txt fi else long=$(expr length $teletrabajo) if (($long < 7)); then # printf "$teletrabajo \t\t $var_no_en \t $fecha_creacion \t $tipo_t \n" printf "$teletrabajo \t\t $var_no_en \t $fecha_creacion \t $tipo_t \n" >> $n ombre_script.noencontrados.txt else # printf "$teletrabajo \t $var_no_en \t $fecha_creacion \t $tipo_t \n" printf "$teletrabajo \t $var_no_en \t $fecha_creacion \t $tipo_t \n" >> $nom bre_script.noencontrados.txt

fi fi done #juntar todo printf "Teletrabajo: \t ultima conexion: \t ip por donde entro: \t fecha de creacion: tipo: \t \n------------- ---------------------- : : : : : : : --------------------- --------------------- ------------\n" > $nombre_script.txt $(cat $nombre_script.encontrados.txt >> $nombre_script.txt) printf "\n\nTeletrabajo: \t ultima conexion: \t f creacion: tipo: \t \n------------ ----------------- ------------------ -----------\n" >> : : : : $nomb re_script.txt $(cat $nombre_script.noencontrados.txt >> $nombre_script.txt) #separar por ip de entrada printf "Teletrabajo: \t ultima conexion: \t ip por donde entro: \t fecha de creacion: tipo: \t \n------------- ---------------------- : : : : : : : --------------------- --------------------- ------------\n" > $nombre_script.$r1 .txt $(cat $nombre_script.encontrados.txt grep -i $r1 >> $nombre_script.$r1.txt ) ### ### printf "Teletrabajo: \t ultima conexion: \t ip por donde entro: \t fecha de creacion: tipo: \t \n------------- ---------------------- ---------- : : -------------------- ------------\n" > $nombre_script.$r2.txt $(cat $nombre_script.encontrados.txt grep -i $r2 >> $nombre_script.$r2.txt ) ##targeamos los resultados printf "\n\ngenerando $nombre_serv.tar" tar -cf $nombre_serv.tar $nombre_script.txt $nombre_script.$r1.txt $nombre_s cript.$r2.txt $nombre_script.encontrados.txt $nombre_script.noencontrados.txt : : $nombre_script.txt printf "\n\neliminando archivos generados" rm -rf $nombrei_script.txt $nombre_script.$r1.txt $nombre_script.$r2.txt $no mbre_script.encontrados.txt $nombre_script.noencontrados.txt $nombre_script.txt printf "\n\nel archivo empaquetado se llama: $nombre_serv.tar \n\n"

[editar] ========================prueba telnet=========================== !!!!Los dos scripts deberan estar en el mismo directorio!!! * prueba_telnet.sh Sera el encargado de ejecutar el script prueba_telnet_mata_telnet.sh que detendr a las conexiones telnet luego de terminado el script y tambien ejecutara la crea cion de los logs, archivos y comandos necesarios. Las variables DESDE y HASTA definen la hora (por ahora y hasta que sea necesario solo evala en intervalos de 1 hora) desde y hasta la cual se enviaran correos avi sando que no se pudo establecer la conexion telnet, por ejemplo: si definimos DE SDE=9 y HASTA=18 solo se enviaran alertas por correo entre las 9am y las 6pm. #!/bin/bash ###variables HORA=$(date '+%H') DESDE=9 HASTA=18

###funciones ###acciones echo "############$(date)################" >> /var/log/prueba_telnet.log /bin/sh ./prueba_telnet_mata_telnet.sh & echo "haciendo telnet a: $1 en el puerto $2." >> /var/log/prueba_telnet.log echo "eliminando /var/log/prueba_telnet.tmp" >> /var/log/prueba_telnet.log rm /var/log/prueba_telnet.tmp > /dev/null 2>&1 echo "exit" telnet "$1" "$2" >> /var/log/prueba_telnet.log echo "exit" telnet "$1" "$2" >> /var/log/prueba_telnet.tmp echo "evaluando si hay respuesta" >> /var/log/prueba_telnet.log RES=`grep $1 /var/log/prueba_telnet.tmp tail -1 ` if [ "$RES" != "Connected to $1." ]; then echo "!!!ALERTA!!! telnet con problemas a $1 en el puerto $2." >> /var/log/p rueba_telnet.log echo "##################################################" >> /var/log/prueba _telnet.log if [ "$HORA" -ge "$DESDE" ] && [ "$HORA" -le "$HASTA" ]; then echo "$(tail -n 30 /var/log/prueba_telnet.log)" mail -s "!!!ALERTA!!! teln et con problemas a $1 en el puerto $2." rcampoverde@cyberline.com.pe > : /dev/nu ll 2>&1 else echo "No se enviara correo por no estar dentro del horario configurado." >> /var/log/prueba_telnet.log fi else echo "telnet sin problemas a $1 en el puerto $2." >> /var/log/prueba_telnet. log fi echo "###################################################" >> /var/log/prueb a_telnet.log * prueba_telnet_mata_telnet.sh Este script detiene las conexiones telnet actuales, por el momento no detiene so lo las iniciadas por el script, detiene todas las conexiones telnet del sistema. este script es ejecutado por prueba:telnet.sh y debera estar en el mismo direct orio que prueba_telnet.sh.

#!/bin/bash sleep 5 echo "matando telnet:" >> /var/log/prueba_telnet.log killall telnet > /dev/null 2>&1 killall telnet> /dev/null 2>&1 echo "telnet muerto." >> /var/log/prueba_telnet.log echo "###################################" >> /var/log/prueba_telnet.log agregar en el crontab el intervalo de ejecucion con el siguiente formato: /root/prueba_telnet.sh ip_a_probar puerto_a_probar por ejemplo: /root/prueba_tel net.sh 192.168.1.1 23

[editar] ====================borrar correos anteriores auna fecha determinada=== ================

(hay que tener presente que hay un comando con cyrus que hace lo mismo o incluso mejor.. creo.) Modo de uso: ejecutar el archivo, escribir la fecha desde la cual, todos los cor reos anteriores sern eliminados. #!/bin/sh ###variables #fecha referencia desde donde se borraran los correos antiguos FECHA_REF= FECHA_REF_UNIX=0 CONTADOR_CORREOS=0 dir_mailboxes= CONFIRMACION=0 #ACCION_AL_FINALIZAR 1=borrar los correos, 0 no hacer nada ACCION_AL_FINALIZAR=0 accion_log=0 FILE_MUERTO="" NOMBRE_CUENTA= aleatorio=$(date "+%T-%N") #funciones function inicializa(){ echo "" > ./correos.txt echo "" > a_eliminar.txt echo "" > eliminados.txt echo "" > cuentas_afectadas.txt echo "" > cuentas_por_afectar.txt } function contador(){ if [ -z "$1" ]; then #si se llama a la funcion "contador" sin parametros, #agrega 1 por defecto: ((++CONTADOR_CORREOS )) else ((CONTADOR_CORREOS = CONTADOR_CORREOS + $1)) fi } function busca_correos(){ if [ "$CONFIRMACION" -eq 1 ] then for i in `find $dir_mailboxes -type f`; do #almacenamos $i file=$i #obtiene la fecha en formato humano del correo fecha=$(grep -R -m 1 -A2 "^Received:" $file tail -1 awk -F"\t" '{print $ 2}') #grabamos el nombre de la cuenta en la variable "NOMBRE_CUENTA" NOMBRE_CUENTA=$(grep -m1 "To: " $file cut -d" " -f4 cut -d"@" -f1 cut -d"<" -f2 cut -d"(" -f2) #convierte la fecha en formato humano a formato en segundos (unix) fecha_unix=$(date -d "$fecha" +%s) if (( "$fecha_unix" <= "$FECHA_REF_UNIX" )) then #graba la ruta absolutra del correo a eliminar en la variable FILE_MUERTO FILE_MUERTO=$file #llama la funcion "elimina_correos" la cual deside si se elimina "FILE_MUERT O" o solo se guarda en la lista. elimina_correos

contador fi done contador echo "El numero de correos afectados es: $CONTADOR_CORREOS." else echo "Esta accion no ha sido autorizada." fi } function pide_datos(){ case $1 in fecha_ref) printf "\nIngrese la fecha segun la cual los correos\n" printf "cuya fecha de recepcion sean menores a la\n" printf "fecha de referencia seran eliminados... \n" printf "MANTENER EL SIGUIENTE FORMATO: dia, mes, anio, \nPor ejemplo: \"23 M ar 2011\" \n\n" printf "Fecha de referencia: " read FECHA_REF FECHA_REF_UNIX=$(date -d "$FECHA_REF" +%s) ;; dir_mailboxes) printf "\nIngrese el directorio donde se encuentran los correos electronicos : [./]: " read dir_mailboxes if [ "$dir_mailboxes" == "" ] then dir_mailboxes="$(pwd)" fi ;; log_accion) printf "Desea guardar un registro de los archivos eliminados? [si=1] [no=0]: " read accion_log ;; accion_al_terminar) printf "\nQue accion desea tomar al terminar la busqueda de correos?: \n" printf "\tEliminar los correos antiguos [1]:\n " printf "\tNo hacer nada, solo guardar las rutas en un archivo de texto [0]: " read ACCION_AL_FINALIZAR ;; validar_datos) echo "" printf "El valor de la fecha de referencia es: $FECHA_REF ($FECHA_REF_UNIX) \n" printf "El directorio do los buzones es: $dir_mailboxes \n" if (("$accion_log" == 0)) then printf "No se guardara log de los correos eliminados.\n" else printf "Se guardara log de los archivos eliminados y de su usuario (uso inte nsivo del HD).\n" fi printf "La accion a tomar al terminar la busqueda de correos sera: " if (("$ACCION_AL_FINALIZAR" == 0)) then printf "No hacer ningun cambio" else printf "Borrar los correos"

fi echo "" printf "Los valores mostrados son correstos?? (S/N): " read confirmacion if [ "$confirmacion" == "S" ] [ "$confirmacion" == "s" ] then echo "aceptado" CONFIRMACION=1 else echo "denegado" CONFIRMACION=0 fi ;; exe_busca_correos) print "Desea comenzar con la busqueda de correos anteriores a la fecha $FECH A_REF ($FECHA_REF_UNIX) ?\n" printf "(Nota: Esta accion no realiza ningun cambio en los correos, solo cre a una\n" printf "lista de los correos anteriores a la fecha $FECHA_REF).\n" printf "Comenzar?(S/N): " read respuesta_exec_busca_correos if [ "$respuesta_exec_busca_correos" == "S" ] [ "$respuesta_exec_busca_co rreos" == "s" ] then busca_correos $FECHA_REF_UNIX else exit 1 fi ;; esac } #function reconstruir(){ #for i in $(ls -1 /var/spool/imap/user/) do # sudo -u cyrus /usr/lib/cyrus/reconstruct $i #done #} function elimina_correos(){ if (("$ACCION_AL_FINALIZAR" == 1)) then if [ "$0" == "$FILE_MUERT0" ] then echo "Casi te eliminas el script!." else rm -f $FILE_MUERTO fi if (("$accion_log" == 1)) then echo "$FILE_MUERTO (eliminado)" echo "$FILE_MUERTO" >> eliminados_$aleatorio.txt echo "$NOMBRE_CUENTA" >> cuentas_afectadas_$aleatorio.txt else echo "$FILE_MUERTO" fi else printf "$FILE_MUERTO \n" >> a_eliminar_$aleatorio.txt printf "$NOMBRE_CUENTA \n" >> cuentas_por_afectar_$aleatorio.txt fi } function imprime_archivos(){ printf "\n a_eliminar_$aleatorio.txt \n"

printf "\n cuentas_por_afectar_$aleatorio.txt \n" printf "\n eliminados_$aleatorio.txt \n" printf "\n cuentas_afectadas_$aleatorio.txt \n" } ######acciones #borra cualquier informacion previa inicializa #pregunta al usuario los datos que necesita para realizar las acciones pide_datos fecha_ref pide_datos dir_mailboxes pide_datos accion_al_terminar pide_datos log_accion #muestra los datos ingresados y le pregunta si son correctos, si lo son, cam bia la variable "CONFIRMACION" a "1". pide_datos validar_datos #inicia la funcion que busca los correos que coincidan con la fecha ingresad a, esta funcion llama a "elimina_correo" la cual elimina el correo o lo almacena #en un archivo de texto. busca_correos imprime_archivos #como ultimo paso se debe ejecutar un "reconstruct" del buzon, esto varia se gun el programa que usemos como encargado de depositar el correo en los buzones ded los clientes.

También podría gustarte