假设我在本地有一个 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