是否可以检查本地socks代理是否可以使用shell脚本运行?

是否可以检查本地socks代理是否可以使用shell脚本运行?

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

但有时 ssh 会意外中断。然后袜子就下来了。

有什么可以用来检查本地 SOCKS 代理是否仍然存在吗?

谢谢,

答案1

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

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

在上面的命令中,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

相关内容