是否可以检查本地袜子代理是否适用于 shell 脚本?

AGa*_*yer 6 shell socks

假设我在本地有一个 SOCKS 连接(由 建立ssh -D8888)。我用它来做很多事情,比如绕过互联网审查。

但有时 ssh 会意外中断。然后袜子掉了。

有什么可以用来检查本地 SOCKS 代理是否还活着的吗?

谢谢,

Seb*_*ian 5

您可以通过尝试通过隧道加载网站来测试袜子代理的可用性。

curl -sSf --socks5-hostname localhost:8888 www.google.com > /dev/null
Run Code Online (Sandbox Code Playgroud)

在上面的命令中,curl将保持沉默,除非发生错误。您可以将此命令包装在脚本中的 for 循环中。curl如果 socks 代理处于活动状态(并且google.com未关闭),则的返回值为零。

#!/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
Run Code Online (Sandbox Code Playgroud)