シェルスクリプトを使用してローカルソックスプロキシを実行できることを確認できますか?

シェルスクリプトを使用してローカルソックスプロキシを実行できることを確認できますか?

ローカルにSOCKS接続があるとします(によって設定されますssh -D8888)。私はインターネット検閲を迂回するなど、多くのことにそれを使用します。

しかし、時にはSSHが予期せず中断されることがあります。すると靴下がはがれた。

ローカルSOCKSプロキシがまだ存在することを確認するために使用できるものはありますか?

ありがとう、

答え1

トンネルを介してWebサイトをロードしようとすると、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

関連情報