在开发机上安装 claude-code ,并且每次启动 claude code 前先检查是否连接了科学上网,我的做法是:
在 $PATH 路径中 “/opt/homebrew/bin” 前面的目录下(比如 ~/.local/bin),将以下 bash 脚本保存为 'claude' 文件,并 chmod +x 权限。注意修改其中的 IP 'x.x.x.x' 为你的科学上网 IP 。
#!/bin/bash
check_ip() {
# Ensure a target IP was passed as an argument
if [[ -z "$1" ]]; then
echo "[Error] Please provide a target IP. Usage: check_ip <IP>" >&2
return 1
fi
local TARGET_IP="$1"
# Fetch public IP using ipconfig.sh with a 5-second timeout
local CURRENT_IP
CURRENT_IP=$(curl -s --max-time 5 https://ipconfig.sh | tr -d '[:space:]')
# Check if IP was successfully retrieved
if [[ -z "$CURRENT_IP" ]]; then
echo "[Error] Could not fetch public IP. Please check your connection!" >&2
return 1
fi
# Compare IPs
if [[ "$CURRENT_IP" == "$TARGET_IP" ]]; then
return 0
else
echo "[Alert] IP mismatch! Expected: $TARGET_IP. Launch denied." >&2
return 1
fi
}
# 包装后的 claude 启动命令
claude_start() {
# 直接使用 if 判断函数的执行状态码( 0 为真,非 0 为假)
if check_ip "x.x.x.x"; then
# 只有在 check_ip 成功(返回 0 )时,才会执行到这里
/opt/homebrew/bin/claude
return 0
else
# check_ip 失败(返回 1 )时,走这里
echo "[Error] Could not launch claude" >&2
return 1
fi
}