能不能通过命令行的方式切换节点呢?
Opened this issue · 2 comments
shenxiaochenn commented
因为远端服务器只有22端口可用,其余端口没有开放。所以想问一下有没有可以直接通过命令行切换节点的方法呢?
zpinocchio commented
可以获取所有的节点组,Bearer不能省略
curl -X GET "http://127.0.0.1:9090/proxies -H "Authorization: Bearer <your_secrt>"
我这里的节点组是🚀 节点选择
如果有特殊符号,需要转换
echo -n "🚀 节点选择" | xxd -plain | sed 's/(..)/%\1/g'
%f0%9f%9a%80%20%e8%8a%82%e7%82%b9%e9%80%89%e6%8b%a9
获取特定节点组的信息,now是当前使用的节点
curl -X GET "http://127.0.0.1:9090/proxies/%f0%9f%9a%80%20%e8%8a%82%e7%82%b9%e9%80%89%e6%8b%a9"
-H "Authorization: Bearer 你的秘钥"
使用 PUT
请求切换节点
curl -X PUT "http://127.0.0.1:9090/proxies/%F0%9F%9A%80%20%E8%8A%82%E7%82%B9%E9%80%89%E6%8B%A9" -H "Authorization: Bearer <your_secret>" -d '{"name":"Node2"}'
i-bara commented
可以参考一下这个链接:https://github.com/Elegycloud/clash-for-linux-backup/issues/40#issuecomment-2136643937,简单来说,可以通过运行如下命令(把 api_url
和 Secret
修改为自己的):
# ====== 开启代理 ======
cat>>~/.bashrc<<EOF
# 开启系统代理
function proxy_on() {
export http_proxy=http://127.0.0.1:7880
export https_proxy=http://127.0.0.1:7880
export all_proxy=socks5://127.0.0.1:7880
export no_proxy=127.0.0.1,localhost
export HTTP_PROXY=http://127.0.0.1:7880
export HTTPS_PROXY=http://127.0.0.1:7880
export ALL_PROXY=socks5://127.0.0.1:7880
export NO_PROXY=127.0.0.1,localhost
echo -e "\033[32m[√] 已开启代理\033[0m"
}
# 关闭系统代理
function proxy_off(){
unset http_proxy
unset https_proxy
unset all_proxy
unset no_proxy
unset HTTP_PROXY
unset HTTPS_PROXY
unset ALL_PROXY
unset NO_PROXY
echo -e "\033[31m[×] 已关闭代理\033[0m"
}
proxy_on
api_url="http://localhost:9090"
Secret=""
# 获取Clash代理节点列表
get_proxy_list() {
# 使用您的命令获取代理节点列表
# ============= 修改此处 =============
proxies=\$(curl -s -X GET -H "Content-Type: application/json" -H "Authorization: Bearer \${Secret}" \$api_url/proxies | jq -c '.proxies.GLOBAL.all')
}
# 选择代理节点
select_proxy() {
local mode=\$1
if [ -z \$mode ]; then
mode="Proxy"
fi
get_proxy_list
echo "========== 代理节点列表 =========="
i=1
# ============= 修改此处 =============
echo "\$proxies" | jq -r '.[]' | while IFS= read -r proxy; do
echo "\$i. \$proxy"
i=\$((i+1))
done
echo "==================================="
read -p "请选择代理节点(输入编号):" proxy_index
proxy=\$(echo "\$proxies" | jq -r ".[\$((proxy_index-1))]")
# ============= 修改结束 =============
if [[ -n \$proxy ]]; then
# 更新Clash的代理节点设置
curl -X PUT -s "\$api_url/proxies/\$mode" -H "Content-Type: application/json" -H "Authorization: Bearer \${Secret}" --data "{\"name\":\"\$proxy\"}" > /dev/null
echo "代理节点已更新为:\$proxy"
else
echo "无效的选择!"
fi
}
EOF
source ~/.bashrc
此后,只需要键入命令 select_proxy
就可以选择代理。