抛砖引玉之-V2RAY一键脚本的修复(hijk.art关站后hostip不能访问

[复制链接]
查看: 10537   回复: 9
发表于 2022-6-23 15:35:37 | 显示全部楼层 |阅读模式
今天在用v2ray.sh一键脚本(
  1. bash <(curl -sL https://s.hijk.art/v2ray.sh)
复制代码
)的时候一直提示我没有解析域名到VPS!我本地ping和在VPS上ping域名都是正常的!于是我查看了一键脚本的代码发现有一句:
  1. if [[ -f ~/v2ray.pem && -f ~/v2ray.key ]]; then            colorEcho ${BLUE}  " 检测到自有证书,将使用其部署"            CERT_FILE="/etc/v2ray/${DOMAIN}.pem"            KEY_FILE="/etc/v2ray/${DOMAIN}.key"        else            resolve=`curl -sL https://hijk.art/hostip.php?d=${DOMAIN}`            res=`echo -n ${resolve} | grep ${IP}`            if [[ -z "${res}" ]]; then                colorEcho ${BLUE}  "${DOMAIN} 解析结果:${resolve}"                colorEcho ${RED}  " 域名未解析到当前服务器IP(${IP})!"                exit 1            fi
复制代码
然后我上https://hijk.art发现站长说要关站了!估计这个hostip.php也要停止服务了!但是我觉得这个脚本还是挺好用的!那……我们来修复一下!我本身是一个小白!我们先来谷歌一下这段代码的用途!首先是
  1. resolve=`curl -sL https://hijk.art/hostip.php?d=${DOMAIN}`
复制代码
也就是将我们输入的网址传送给hostip.php这个PHP文件,文件解析域名后反馈一个IP回来(没有解析成功我也不知道反馈啥)赋值给resolve,然后
  1. res=`echo -n ${resolve} | grep ${IP}`            if [[ -z "${res}" ]]; then
复制代码
这个语句,我查了一下shell的说明-z是检查长度是否为零!这句没看懂!希望有大哥解答一下!还有
  1. `echo -n ${resolve} | grep ${IP}
复制代码
这句中的|又是啥用途的?反正意思大概明白了就是要hostip.php反馈我们输入域名的IP!个人觉得这个第三方检查……本机ping域名不就可以了么?于是我又谷歌了一段代码
  1. `ping ${DOMAIN} -c 1 | sed '1{s/[^(]*(//;s/).*//;q}'`
复制代码
我们把这段替换进去
  1. resolve=`ping ${DOMAIN} -c 1 | sed '1{s/[^(]*(//;s/).*//;q}'`            res=`echo -n ${resolve} | grep ${IP}`            if [[ -z "${res}" ]]; then                colorEcho ${BLUE}  "${DOMAIN} 解析结果:${resolve}"                colorEcho ${RED}  " 域名未解析到当前服务器IP(${IP})!"                exit 1
复制代码
这样的话就不依赖外部PHP文件解析了!
然后继续放进VPS里跑!然后提示“acme.sh is using ZeroSSL as default CA now”云云~这里没截图!继续谷歌,解决办法就是在申请证书之前再加一条命令acme.sh   --register-account -m 邮箱地址
于是我又改了一下代码
  1. ~/.acme.sh/acme.sh  --upgrade  --auto-upgrade        if [[ "$BT" = "false" ]]; then            ~/.acme.sh/acme.sh   --register-account -m admin@$DOMAIN            ~/.acme.sh/acme.sh   --issue -d $DOMAIN --keylength ec-256 --pre-hook "systemctl stop nginx" --post-hook "systemctl restart nginx"  --standalone        else            ~/.acme.sh/acme.sh   --register-account -m admin@$DOMAIN            ~/.acme.sh/acme.sh   --issue -d $DOMAIN --keylength ec-256 --pre-hook "nginx -s stop || { echo -n ''; }" --post-hook "nginx -c /www/server/nginx/conf/nginx.conf || { echo -n ''; }"  --standalone        fi
复制代码
至此脚本就可以顺利运行安装了!
希望有大哥解答一下上面小弟的疑问和检错!谢谢!
回复

使用道具 举报

发表于 2022-6-23 15:35:58 | 显示全部楼层
  1. wget -N --no-check-certificate https://raw.githubusercontent.com/veip007/scripts/master/xray.sh && chmod +x xray.sh && bash xray.sh
复制代码
用我的吧,就是这个站长的,我修复好了的
回复 支持 反对

使用道具 举报

发表于 2022-6-23 15:36:35 | 显示全部楼层
技术贴顶一下
回复 支持 反对

使用道具 举报

发表于 2022-6-23 15:36:49 | 显示全部楼层
少有的技术贴:victory:
回复 支持 反对

使用道具 举报

发表于 2022-6-23 15:37:13 | 显示全部楼层
技术大佬,感谢分享,
回复 支持 反对

使用道具 举报

发表于 2022-6-23 15:37:18 | 显示全部楼层
玉会告诉你不要折腾什么莫名其妙的一键
回复 支持 反对

使用道具 举报

发表于 2022-6-23 15:38:17 | 显示全部楼层
我对技术贴不感兴趣,我对楼主图像感兴趣,图像名字是不是"自取其(ru)"?
回复 支持 反对

使用道具 举报

发表于 2022-6-23 15:38:59 | 显示全部楼层
“我查了一下shell的说明-z是检查长度是否为零”
就是判断变量的值是不是空的,成立的话执行then之后的代码,如果不是且后面有else就执行else之后的代码
“这句中的|又是啥用途的”
管道符。例如:a | b
将命令a的执行结果当做命令b的输入。找了一段更好的解释
“利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。”
获取域名解析的ip有更优雅的方法
  1.         server_ip=$(curl -s ipv4.ip.sb)        domain_ip=$(nslookup $domain | grep Address | cut -d " " -f 2 | grep  -v Address)        if [[ "$server_ip" != "$domain_ip" ]] && [[ "$server_ip" = "" ]];then                echo -e "$(red) The domain name is not resolved to this server, please check."                exit        fi        echo -e "$(green) Verification passed, installation will continue..."
复制代码
bash语言入门很简单,你可以买一本
回复 支持 反对

使用道具 举报

发表于 2022-6-23 15:39:54 | 显示全部楼层
其实也可以改用 host 命令,这个是专门用来解析域名的~
回复 支持 反对

使用道具 举报

发表于 2022-6-23 15:40:49 | 显示全部楼层
最好自己手动安装就不会出现各种未知错误了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则