Ajuda com script para passar tráfego

0

Estou tentando escrever um script para testar nossos servidores proxy para ver se eles estão passando tráfego. Eu escrevi este código abaixo para implementar a ferramenta "httpie", mas ainda com problemas. Alguém pode por favor dar uma olhada e deixe-me saber o que há de errado com este código? O código deve verificar todos os endereços IP do proxy para garantir que todos os IPs estejam passando tráfego e, se cada proxy retornar 200, o código deve sair, mas se tivermos um problema, o código deve enviar um e-mail com o endereço IP específico retornou este erro específico.

#!/bin/bash
proxy_targets="http://10.1.1.4:3128 http://10.1.1.5:3128 http://10.1.1.6:3128"

failed_hosts=""

for i in $proxy_targets
do

if http --check-status --ignore-stdin --timeout=2.5 --proxy=http:$i HEAD www.msftncsi.com/ncsi.txt &> /dev/null; then
    echo 'OK!'
else
    case $? in
        2) echo 'Request timed out!'| mail -s "The following WSA has failed to pass traffic with the following error" [email protected]
rvard.edu  ;;
        3) echo 'Unexpected HTTP 3xx Redirection!'| mail -s "The following WSA has failed to pass traffic with the following error" [email protected]  ;;
        4) echo 'HTTP 4xx Client Error!'| mail -s "The following WSA has failed to pass traffic with the following error" [email protected]  ;;
        5) echo 'HTTP 5xx Server Error!'| mail -s "The following WSA has failed to pass traffic with the following error" [email protected]  ;;
        6) echo 'Exceeded --max-redirects=<n> redirects!'| mail -s "The following WSA has failed to pass traffic with the following error" [email protected]  ;;
        *) echo 'Other Error!'| mail -s "The following WSA has failed to pass traffic with the following error" [email protected] ;;
    esac
fi
done;
    
por Katkota 12.07.2018 / 03:47

1 resposta

1

Você tem o IP armazenado em i para poder adicioná-lo ao seu e-mail da seguinte forma:

#!/bin/bash

proxy_targets=( 'http://10.1.1.4:3128' 'http://10.1.1.5:3128' 'http://10.1.1.6:3128' )
failed_hosts=

for i in "${proxy_targets[@]}"
do
    exit_code=$(http --check-status --ignore-stdin --timeout=2.5 "--proxy=$i" HEAD www.msftncsi.com/ncsi.txt &> /dev/null; echo $?)
    if ((exit_code==0))
    then
        echo 'OK!'
    else
        ip=${i#http://}     # Removes http:// from variable
        ip=${ip%:[0-9]*}    # Removes port from the end
        case $exit_code in
            2)  echo 'Request timed out!' | \
                mail -s "The following WSA has failed to pass traffic: ${ip}, with the following error: $exit_code" [email protected]  
            ;;
            3)  echo 'Unexpected HTTP 3xx Redirection!' | \
                mail -s "The following WSA has failed to pass traffic: ${ip}, with the following error: $exit_code" [email protected]  
            ;;
            4)  echo 'HTTP 4xx Client Error!' | \
                mail -s "The following WSA has failed to pass traffic: ${ip}, with the following error: $exit_code" [email protected]  
            ;;
            5)  echo 'HTTP 5xx Server Error!' | \
                mail -s "The following WSA has failed to pass traffic: ${ip}, with the following error: $exit_code" [email protected]  
            ;;
            6)  echo 'Exceeded --max-redirects=<n> redirects!' | \
                mail -s "The following WSA has failed to pass traffic: ${ip}, with the following error: $exit_code" [email protected]  
            ;;
            *)  echo 'Other Error!' | \
                mail -s "The following WSA has failed to pass traffic: ${ip}, with the following error: $exit_code" [email protected] 
            ;;
        esac
    fi
done
  • eu coloco proxy_targets em uma matriz
  • Eu citei --proxy=$i e removi o extra http://
  • Estou armazenando o código de saída em uma variável para que seja preservado após a atribuição da variável
  • Usando a expansão de parâmetro, tenho ip para o endereço atual, removendo a http: // e a porta
  • Adicionei ip e exit_code ao assunto do e-mail.
por 12.07.2018 / 04:58