frpc安装部署脚本
frpc使用supervisorctl 来作为frpc的启动程序
实现步骤
1.下载frp
2.解压frp
3.配置frpc.ini
4.配置supervisorctl启动配置文件
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
frp_url = r"https://github.com/fatedier/frp/releases/download/v0.41.0/frp_0.41.0_linux_amd64.tar.gz" # 下载路径
dec_path = r"/opt" # 解压路径
ln_path = r"/opt/frp" # 软连接的目录
down_path = "/data/softwares" # 下载存放的路径
supervisor_name = r"/etc/supervisord.d/frpc.ini" # supervisorct 配置文件
# frpc.ini配置
frpc_config = """[common]
server_addr = 192.168.1.2
server_port = 7000
token = 123456
# 日志存放路径
log_file = /opt/frp/frpc.log
# 日志记录类别
# 可选:trace, debug, info, warn, error
log_level = info
# 最多保存多少天日志
log_max_days = 31
# tls 加密传输
tls_enable = true
[ssh_22]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6163
"""
# supervisorcr配置内容
frpc_supervisor_config = """autorestart=true
autostart=true
command=/opt/frp/frpc -c /opt/frp/frpc.ini
directory=/opt/frp
startretries=3
startsecs=10
user=root
"""
frpc_config_path = os.path.join(ln_path, "frpc.in") #frpc.ini路径
def frpc_install(url: str, ln_path: str, down_path: str, dec_path: str):
"""
# url: string, frp下载地址
# ln_path: string,软链接路径
# down_path: str, frp包下载放置目录
# dec_path: str, 解压目录
"""
download_cmd = "wget -c --http-user=download --http-passwd=fa7440dc-f64b-4a00-98fa-8027bd4f4a9a {}".format(url)
tar_name = url.split("/")[-1]
print("tar文件名: ", tar_name)
dir_name = tar_name.replace(".tar.gz", "")
print("frp目录名: ", dir_name)
frp_path = os.path.join(dec_path, dir_name)
print("frp安装路径: ", frp_path)
os.system("mkdir -p {}".format(down_path)) # 创建下载目录
os.chdir(down_path)
if os.path.exists(tar_name):
print("文件已存在!")
else:
os.system(download_cmd) # 下载frp
os.system("tar zxf {} -C {} ".format(tar_name, dec_path)) # 解压frp
os.system("ln -sv {} {}".format(frp_path, ln_path)) # 创建软连接
# frp配置
def write_config(config: str, config_path: str):
print("\n", "配置文件路径: ", config_path)
with open(config_path, "w") as f:
f.write(config)
os.system("cat {}".format(config_path))
frpc_install(frp_url, ln_path, down_path, dec_path)
write_config(frpc_config, frpc_config_path)
write_config(frpc_supervisor_config, supervisor_name)
执行脚本无误后,检查配置文件,启动frpc
supervisorctl update
续更