Ping a varios hosts.

d
Visto en The Linux Tips
#!/bin/bash
for i in 192.168.0.{1..10}
do
   ping -c 1 -t 1 "$i" >/dev/null 2>&1 &&
   echo "Ping Status of $i : Success" ||
   echo "Ping Status of $i : Failed"
done
Leer más...

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...

controla-ancho-de-banda.sh

d
Nombre: controla-ancho-de-banda.sh
Autor: Joaquín E. Naiviat [ joaquinaiviat@yahoo.com.ar ]
Visto en Desde Linux
#    controla-ancho-de-banda.sh
#
#    Copyright 2013 Joaquín E. Naiviat 
#       
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 3 of the License, or
#    (at your option) any later version.
#       
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#       
#    You should have received a copy of the GNU General Public License
#    along with limita_transmission.sh. If not, see .
#
#
# NOMBRE: controla-ancho-de-banda.sh
#
# DESCRIPCIÓN: Controla las velocidades de carga y descarga del programa
# «Transmission» según el consumo de ancho de banda del programa «Firefox».
#
# REQUIERE: los siguientes programas son necesarios para el correcto
# funcionamiento: Transmission, Firefox, Nethogs, awk.
#
# CONSIDERACIONES:Se requiere su ejecución como root para poder iniciar «Nethogs».
#
#
#
#!/bin/bash
 
#Valores por defecto de carga y descarga de transmission-remote
Lim_U=50
Lim_D=75
 
cd /tmp
 
LimitaSubida50(){
        #Evita usar demasiado el comando transmission-remote
        if [ "$Lim_U" -eq "5" ]; then
                su joaquin -c "transmission-remote -u 50"
                Lim_U=50
        fi
}
LimitaSubida5(){
        if [ "$Lim_U" -ne "5" ]; then
                su joaquin -c "transmission-remote -u 5"
                Lim_U=5
        fi
}
LimitaBajadada75(){
        #Evita usar demasiado el comando transmission-remote
        if [ "$Lim_D" -eq "5" ]; then
                su joaquin -c "transmission-remote -d 75"
                Lim_D=75
        fi
}
LimitaBajadada5(){
        if [ "$Lim_D" -ne "5" ]; then
                su joaquin -c "transmission-remote -d 5"
                Lim_D=5
        fi
}
 
Apagar=0
 
DetenerScript(){
# Termina el Script con estado 130 (SIGINT) correctamente
       
        Apagar=1
       
        #Detiene nethogs si está en ejecución
        VERIF_NETHOGS=` ps ax | grep -v grep| grep "nethogs -t"`
        if [ "$?" -eq "0" ]; then
                killall nethogs
        fi
       
        #Borra /tmp/net.lista
        if [ -f /tmp/net.lista ]; then
                rm /tmp/net.lista
        fi
       
        #Restaura valores predeterminados de carga y descarga de transmission-remote
        LimitaSubida50
        LimitaBajadada75
       
        exit 130
}
 
trap DetenerScript INT TERM
 
 
while true;
do
        if [ "$Apagar" -eq "0" ]; then
       
                #Comprueba si transmission está en ejecución antes de iniciar.
                EJEC_TRANSMSSION=`ps -A | grep transmission`
                if [ "$?" -eq "0" ]; then
                       
                        #Inicia torrents si están pausados
                        VERIF_TRANSMISSION=`transmission-remote -tall -i | grep Stopped`
                        if [ "$?" -eq "0" ]; then
                                su joaquin -c "transmission-remote -tall -s"
                        fi
               
                        #Comprueba si firefox está en ejecución antes de iniciar Nethogs.
                        EJEC_FIREFOX=`ps -A | grep firefox`
                        if [ "$?" -eq "0" ]; then
                                #Guarda la salida de nethogs a un archivo «net.lista»
                                nethogs -t > net.lista &
                                sleep 2
                                killall nethogs 
                                       
                                #Lee net.lista y filtra los KB/s enviados y recibidos
                                #KB/s ENVIADOS: $2 RECIBIDOS $3  
                                KB_ENV=`grep firefox net.lista | awk '{print $2}' | awk -F"." '{print $1}'`
                                KB_REC=`grep firefox net.lista | awk '{print $3}' | awk -F"." '{print $1}'`          
 
                                #Controla ancho de banda de transmission según el uso de firefox                                               
                                #Verifica que "$KB_ENV" o "$KB_REC" no den como resultado nada,
                                #para evitar mensajes de error en -gt
                                if [ "$KB_ENV" != "" ]; then
                                        if [ "$KB_ENV" -gt "0" ]; then
                                                LimitaSubida5
                                        else                       
                                                LimitaSubida50
                                        fi     
                                                               
                                else
                                                LimitaSubida50
                                fi
                                                       
                                if [ "$KB_REC" != "" ]; then
                                        if [ "$KB_REC" -gt "3" ]; then
                                                LimitaBajadada5
                                        else
                                                LimitaBajadada75
                                        fi
                                else
                                                LimitaBajadada75
                                fi
                               
                                sleep 5
                        else
                                #Si Firefox está detenido, restaura valores y espera
                                LimitaSubida50
                                LimitaBajadada75
                                sleep 8
                        fi     
                else
                                #Si Transmission está detenido espera
                                sleep 20
                fi
        else
                #Sale del bucle al recibir la señal Apagar=1
                break
        fi     
                       
        done
 
exit 0
Leer más...

ansiweather

d
Nombre: ansiweather
Autor: Frederic Cambus
Más información del script en fcambus
#!/usr/bin/env bash

###############################################################################
#                                                                             #
# AnsiWeather 1.00 (c) by Frederic Cambus 2013                                #
# https://github.com/fcambus/ansiweather                                      #
#                                                                             #
# Created: 2013/08/29                                                         #
# Last Updated: 2013/10/19                                                    #
#                                                                             #
# AnsiWeather is released under the BSD 3-Clause license.                     #
# See LICENSE file for details.                                               #
#                                                                             #
###############################################################################



###[ Configuration options ]###################################################

config_file=~/.ansiweatherrc

function get_config {
        ret=""
        if [ -f $config_file ]
        then
                ret=$(grep $1 $config_file | awk -F\: '{print $2}')
        fi

        if [ "X$ret" = "X" ]
        then
                return 1
        else
                echo $ret
        fi
}

# Location : example "Moscow,RU"
if [ ! -z "$1" ]
then
        location=$1;
else
        location=$(get_config "location" || echo "Moscow,RU")
fi

# System of Units : "metric" or "imperial"
if [ ! -z "$2" ]
then
        units=$2
else
        units=$(get_config "units" || echo "metric")
fi

# Display symbols : "true" or "false" (requires an Unicode capable display)
symbols=$(get_config "symbols" || echo true)


#### [ Colors and characters ]#################################################

background=$(get_config "background" || echo "\033[44m")
text=$(get_config "text" || echo "\033[36;1m")
data=$(get_config "data" || echo "\033[33;1m")
delimiter=$(get_config "delimiter" || echo "\033[35m=>")
dashes=$(get_config "dashes" || echo "\033[34m-")



###[ Unicode Symbols for icons ]###############################################

sun=$(get_config "sun" || echo "\033[33;1m\xe2\x98\x80")
moon=$(get_config "moon" || echo "\033[36m\xe2\x98\xbd")
clouds=$(get_config "clouds" || echo "\033[37;1m\xe2\x98\x81")
rain=$(get_config "rain" || echo "\xe2\x98\x94")
fog=$(get_config "fog" || echo "\xe2\x96\x92")



###[ Fetch Weather data ]######################################################

fetch_cmd=$(get_config "fetch_cmd" || echo "curl -s")

weather=$($fetch_cmd "http://api.openweathermap.org/data/2.5/weather?q=$location\&units=$units")



###[ Process Weather data ]####################################################

city=$(echo $weather | jq -r '.name')
temperature=$(printf '%.0f' $(echo $weather | jq '.main.temp'))
humidity=$(echo $weather | jq '.main.humidity')
pressure=$(echo $weather | jq '.main.pressure')
sky=$(echo $weather | jq -r '.weather[0].main')
sunrise=$(echo $weather | jq '.sys.sunrise')
sunset=$(echo $weather | jq '.sys.sunset')
wind=$(echo $weather | jq '.wind.speed')



###[ Set the period ]##########################################################

now=$(date +%s)

if [ $now -ge $sunset ] || [ $now -le $sunrise ]
then
        period="night"
else
        period="day"
fi



###[ Set the scale ]###########################################################

case $units in
        metric)
                scale="°C"
                speed_unit="m/s"
                pressureUnit="hPa"
                pressure=$(printf '%.0f' $pressure)
                ;;
        imperial)
                scale="°F"
                speed_unit="mph"
                pressureUnit="inHg"
                pressure=$(printf '%.2f' $(echo "$pressure*0.0295" | bc))
                ;;
esac



###[ Set icons ]###############################################################

if [ $symbols = true ]
then
        case $sky in
                Clear)
                        if [ $period = "night" ]
                        then
                                icon="$moon "
                        else
                                icon="$sun  "
                        fi
                        ;;
                Clouds)
                        icon="$clouds  "
                        ;;
                Rain)
                        icon="$rain  "
                        ;;
                Fog)
                        icon="$fog  "
                        ;;
        esac
fi



###[ Display current Weather ]#################################################

echo -e "$background$text Current weather in $city $delimiter$data $temperature $scale $icon$dashes$text Humidity $delimiter$data $humidity % $dashes$text Wind $delimiter$data $wind $speed_unit $dashes$text Pressure $delimiter$data $pressure $pressureUnit \033[0m"

Leer más...