Ngrok是一个高可玩性的工具,在云服务器上搭建完Ngrok服务后,通过客户端的部署,这个工具可以实现内网穿透。内网穿透,你懂的,可以干好事也能干坏事。通常,我们都干。
网上一堆Ngrok云服务器部署教程,例如这个, 民用版的Ngrok 貌似不再更新了,它有一个bug,就是用一段时间后会自动奔溃,导致服务不再可用。这时,需要在云服务器上手动重新启动Ngrok服务。本文提供一种通过脚本自动判断ngrok服务是否存在,如果不存在,则重新启动。具体如下:
一、检查及重启服务代码(python),checkprocess.py
# coding:utf-8
import os
import datetime
import time
from sendmail import send_mail
def check_process():
process="./cron.lock"
os.system("ps -ef|grep ngrokd|grep -v grep >%s" % process)
if not(os.path.getsize(process)):
send_mail(msg_title='ngrok 停止运行了',smsg='ngrok进程停止')
os.system('/path/to/ngrok.sh')
else:
f=open('./cron.lock', "r+")
f.truncate()
if __name__ == '__main__':
i = 0
while True:
print ('check times : %s' % str(i))
check_process()
time.sleep(60)
i+=1
上面代码中,/path/to/ngrok.sh 是下文所述脚本的路径。send_mail是一个发送邮件到邮箱的方法。你应该自己去定义。
二、ngrok启动脚本ngrok.sh
nohup /ngrok/ngrok/bin/ngrokd -tlsKey="/ngrok/ngrok/assets/server/tls/snakeoil.key" \
-tlsCrt="/ngrok/ngrok/assets/server/tls/snakeoil.crt" -domain="你的域名" \
-httpAddr=":8081" -httpsAddr=":8082" -tunnelAddr=":8083" >/dev/null 2>&1 &
以上仅供参考,直接复制是无效的,需要根据具体情况具体修改。
三、长期运行
一般SSH连接到服务器,开一个Screen,然后 python3 checkprocess.py 然后Ctrl+A+D 后台掉就可以。