로컬로 SOCKS 연결이 있다고 가정해 보겠습니다( 에 의해 설정됨 ssh -D8888
). 나는 인터넷 검열을 우회하는 것과 같은 많은 일에 그것을 사용합니다.
그러나 때로는 SSH가 예기치 않게 중단되는 경우가 있습니다. 그러자 양말이 벗겨졌습니다.
로컬 SOCKS 프록시가 여전히 존재하는지 확인하는 데 사용할 수 있는 것이 있습니까?
감사해요,
답변1
터널을 통해 웹사이트 로드를 시도하여 sock 프록시의 가용성을 테스트할 수 있습니다.
curl -sSf --socks5-hostname localhost:8888 www.google.com > /dev/null
위 명령에서는 curl
오류가 발생하지 않는 한 침묵합니다. 스크립트 내에서 for 루프로 이 명령을 래핑할 수 있습니다. curl
양말 프록시가 활성 상태이고 google.com
닫히지 않은 경우 반환 값은 0입니다.
#!/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