frp
This commit is contained in:
BIN
frpc/frp_0.64.0_linux_amd64.tar.gz
Normal file
BIN
frpc/frp_0.64.0_linux_amd64.tar.gz
Normal file
Binary file not shown.
10
frpc/frpc.toml
Normal file
10
frpc/frpc.toml
Normal file
@@ -0,0 +1,10 @@
|
||||
[common]
|
||||
server_addr = 8.218.134.198
|
||||
server_port = 8041
|
||||
token = PAioH8syP!82T%
|
||||
|
||||
[nely]
|
||||
type = tcp
|
||||
local_ip = 127.0.0.1
|
||||
local_port = 34252
|
||||
remote_port = 34252
|
||||
307
frpc/install_frpc.sh
Normal file
307
frpc/install_frpc.sh
Normal file
@@ -0,0 +1,307 @@
|
||||
#!/bin/bash
|
||||
|
||||
# FRP Client 一键安装脚本
|
||||
# 自动解压、配置和安装 frpc
|
||||
# 使用方法: chmod +x install_frpc.sh && ./install_frpc.sh
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 日志函数
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# 检查是否为root用户
|
||||
check_root() {
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
log_error "此脚本需要root权限运行"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查文件是否存在
|
||||
check_files() {
|
||||
if [[ ! -f "frp_0.64.0_linux_amd64.tar.gz" ]]; then
|
||||
log_error "找不到 frp_0.64.0_linux_amd64.tar.gz 文件"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "frpc.toml" ]]; then
|
||||
log_error "找不到 frpc.toml 配置文件"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 创建frp用户
|
||||
create_frp_user() {
|
||||
if ! id "frp" &>/dev/null; then
|
||||
log_info "创建 frp 用户..."
|
||||
useradd -r -s /bin/false frp
|
||||
else
|
||||
log_info "frp 用户已存在"
|
||||
fi
|
||||
}
|
||||
|
||||
# 解压安装包
|
||||
extract_archive() {
|
||||
log_info "解压 frp_0.64.0_linux_amd64.tar.gz..."
|
||||
|
||||
# 创建临时目录
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
|
||||
# 解压到临时目录
|
||||
tar -xzf frp_0.64.0_linux_amd64.tar.gz -C "$TEMP_DIR"
|
||||
|
||||
# 创建安装目录
|
||||
mkdir -p /root/frpc
|
||||
|
||||
# 复制文件
|
||||
cp "$TEMP_DIR"/frp_0.64.0_linux_amd64/frpc /root/frpc/
|
||||
|
||||
# 清理临时目录
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
# 设置权限 - root目录需要特殊权限处理
|
||||
chmod 755 /root # 确保frp用户可以访问root目录
|
||||
chown -R root:frp /root/frpc
|
||||
chmod 750 /root/frpc
|
||||
chmod +x /root/frpc/frpc
|
||||
|
||||
log_info "frpc 已安装到 /root/frpc/"
|
||||
}
|
||||
|
||||
# 配置frpc
|
||||
configure_frpc() {
|
||||
log_info "配置 frpc..."
|
||||
|
||||
# 复制配置文件
|
||||
cp frpc.toml /root/frpc/
|
||||
chown root:frp /root/frpc/frpc.toml
|
||||
chmod 640 /root/frpc/frpc.toml
|
||||
|
||||
log_info "配置文件已复制到 /root/frpc/frpc.toml"
|
||||
}
|
||||
|
||||
# 创建systemd服务
|
||||
create_service() {
|
||||
log_info "创建 systemd 服务..."
|
||||
|
||||
cat > /etc/systemd/system/frpc.service << 'EOF'
|
||||
[Unit]
|
||||
Description=Frp Client Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=frp
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
ExecStart=/root/frpc/frpc -c /root/frpc/frpc.toml
|
||||
ExecReload=/bin/kill -s HUP $MAINPID
|
||||
KillMode=mixed
|
||||
TimeoutStopSec=5s
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
# 重新加载systemd
|
||||
systemctl daemon-reload
|
||||
|
||||
log_info "systemd 服务已创建"
|
||||
}
|
||||
|
||||
# 启动服务
|
||||
start_service() {
|
||||
log_info "启动 frpc 服务..."
|
||||
|
||||
# 启用开机自启
|
||||
systemctl enable frpc
|
||||
|
||||
# 启动服务
|
||||
systemctl start frpc
|
||||
|
||||
# 检查服务状态
|
||||
if systemctl is-active --quiet frpc; then
|
||||
log_info "frpc 服务启动成功"
|
||||
else
|
||||
log_error "frpc 服务启动失败"
|
||||
log_error "请检查日志: journalctl -u frpc -f"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 显示状态信息
|
||||
show_status() {
|
||||
log_info "安装完成!"
|
||||
echo ""
|
||||
echo "服务状态:"
|
||||
systemctl status frpc --no-pager
|
||||
echo ""
|
||||
echo "常用命令:"
|
||||
echo " 启动服务: systemctl start frpc"
|
||||
echo " 停止服务: systemctl stop frpc"
|
||||
echo " 重启服务: systemctl restart frpc"
|
||||
echo " 查看状态: systemctl status frpc"
|
||||
echo " 查看日志: journalctl -u frpc -f"
|
||||
echo ""
|
||||
echo "配置文件位置: /root/frpc/frpc.toml"
|
||||
echo "程序位置: /root/frpc/frpc"
|
||||
}
|
||||
|
||||
# 交互式服务管理菜单
|
||||
interactive_menu() {
|
||||
while true; do
|
||||
echo ""
|
||||
echo "==============================================="
|
||||
echo " FRP Client 服务管理"
|
||||
echo "==============================================="
|
||||
echo "1. 启动服务 (start)"
|
||||
echo "2. 停止服务 (stop)"
|
||||
echo "3. 重启服务 (restart)"
|
||||
echo "4. 查看状态 (status)"
|
||||
echo "5. 查看日志 (logs)"
|
||||
echo "6. 查看配置文件 (config)"
|
||||
echo "7. 编辑配置文件 (edit)"
|
||||
echo "8. 卸载服务 (uninstall)"
|
||||
echo "0. 退出 (exit)"
|
||||
echo "==============================================="
|
||||
|
||||
read -p "请选择操作 [0-8]: " choice
|
||||
|
||||
case $choice in
|
||||
1|start)
|
||||
log_info "启动 frpc 服务..."
|
||||
systemctl start frpc
|
||||
if systemctl is-active --quiet frpc; then
|
||||
log_info "服务启动成功"
|
||||
else
|
||||
log_error "服务启动失败"
|
||||
fi
|
||||
systemctl status frpc --no-pager
|
||||
;;
|
||||
2|stop)
|
||||
log_info "停止 frpc 服务..."
|
||||
systemctl stop frpc
|
||||
log_info "服务已停止"
|
||||
;;
|
||||
3|restart)
|
||||
log_info "重启 frpc 服务..."
|
||||
systemctl restart frpc
|
||||
if systemctl is-active --quiet frpc; then
|
||||
log_info "服务重启成功"
|
||||
else
|
||||
log_error "服务重启失败"
|
||||
fi
|
||||
systemctl status frpc --no-pager
|
||||
;;
|
||||
4|status)
|
||||
echo "服务状态:"
|
||||
systemctl status frpc --no-pager
|
||||
;;
|
||||
5|logs)
|
||||
log_info "查看服务日志 (按 Ctrl+C 退出):"
|
||||
sleep 1
|
||||
journalctl -u frpc -f
|
||||
;;
|
||||
6|config)
|
||||
echo "配置文件内容:"
|
||||
echo "----------------------------------------"
|
||||
cat /root/frpc/frpc.toml
|
||||
echo "----------------------------------------"
|
||||
;;
|
||||
7|edit)
|
||||
log_info "编辑配置文件..."
|
||||
if command -v nano >/dev/null 2>&1; then
|
||||
nano /root/frpc/frpc.toml
|
||||
elif command -v vi >/dev/null 2>&1; then
|
||||
vi /root/frpc/frpc.toml
|
||||
else
|
||||
log_error "未找到文本编辑器,请手动编辑: /root/frpc/frpc.toml"
|
||||
fi
|
||||
|
||||
read -p "是否重启服务使配置生效? [y/N]: " restart_choice
|
||||
if [[ $restart_choice =~ ^[Yy]$ ]]; then
|
||||
systemctl restart frpc
|
||||
log_info "服务已重启"
|
||||
fi
|
||||
;;
|
||||
8|uninstall)
|
||||
read -p "确定要卸载 frpc 服务吗? [y/N]: " confirm
|
||||
if [[ $confirm =~ ^[Yy]$ ]]; then
|
||||
log_warn "正在卸载 frpc 服务..."
|
||||
systemctl stop frpc 2>/dev/null || true
|
||||
systemctl disable frpc 2>/dev/null || true
|
||||
rm -f /etc/systemd/system/frpc.service
|
||||
systemctl daemon-reload
|
||||
rm -rf /root/frpc
|
||||
userdel -r frp 2>/dev/null || true
|
||||
log_info "frpc 服务已完全卸载"
|
||||
exit 0
|
||||
else
|
||||
log_info "取消卸载操作"
|
||||
fi
|
||||
;;
|
||||
0|exit|quit|q)
|
||||
log_info "退出管理界面"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
log_error "无效选择,请输入 0-8 或对应命令"
|
||||
;;
|
||||
esac
|
||||
|
||||
read -p "按回车键继续..."
|
||||
done
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
# 检查是否为管理模式
|
||||
if [[ "$1" == "manage" || "$1" == "menu" || "$1" == "-m" ]]; then
|
||||
interactive_menu
|
||||
return
|
||||
fi
|
||||
|
||||
log_info "开始安装 FRP Client..."
|
||||
|
||||
check_root
|
||||
check_files
|
||||
create_frp_user
|
||||
extract_archive
|
||||
configure_frpc
|
||||
create_service
|
||||
start_service
|
||||
show_status
|
||||
|
||||
echo ""
|
||||
log_info "FRP Client 安装完成!"
|
||||
|
||||
# 询问是否进入交互管理界面
|
||||
read -p "是否进入交互式管理界面? [y/N]: " enter_menu
|
||||
if [[ $enter_menu =~ ^[Yy]$ ]]; then
|
||||
interactive_menu
|
||||
else
|
||||
echo ""
|
||||
log_info "可使用以下命令管理服务:"
|
||||
echo " ./install_frpc.sh manage # 进入交互管理界面"
|
||||
echo " systemctl [start|stop|restart|status] frpc"
|
||||
fi
|
||||
}
|
||||
|
||||
# 运行主函数
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user