é possível verificar se um proxy de socks local funciona com o shell script?

6

Digamos que eu tenha uma conexão SOCKS no local (estabelecida por ssh -D8888 ). Eu uso isso para fazer muitas coisas, como ignorar a censura na internet.

Mas às vezes o ssh seria inesperadamente quebrado. Então as meias estão caídas.

Existe algo que eu possa usar para verificar se o proxy SOCKS local ainda está ativo?

Obrigado,

    
por AGamePlayer 06.09.2015 / 05:36

1 resposta

5

Você pode testar a disponibilidade de um proxy de meias ao tentar carregar um site pelo túnel.

curl -sSf --socks5-hostname localhost:8888 www.google.com > /dev/null

No comando acima, curl será silencioso, a menos que ocorra um erro. Você pode envolver esse comando em um loop for dentro de um script. O valor de retorno de curl é zero se o proxy de meias estiver ativo (e google.com não estiver inativo).

#!/bin/bash

set -o errexit
set -o nounset
#set -o xtrace

PROGNAME=$(basename $0)
die () {
  echo "${PROGNAME}: ${1:-"Unknown Error, Abort."}" 1>&2
  exit 1
}

status=0
while [[ 1 ]]; do
  curl -sSf --socks5-hostname localhost:8888 www.google.com > /dev/null || status=$?
  if [[ $status -ne 0 ]]; then
    echo "Trying to reconnect .."
    # kill proxy
    # reconnect-cmd || die "$LINENO: reconnecting failed"
  fi
  sleep 100
done
    
por 06.09.2015 / 08:24

Tags