Skip to content

A convenient frp tunnel management tool that supports dynamic creation, management, and monitoring of frp proxy tunnels.

License

Notifications You must be signed in to change notification settings

openapphub/frpc-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

frp-tunnel-cli

一个便捷的 frp 隧道管理命令行工具,支持动态创建、管理和监控 frp 代理隧道。

📖 项目简介

frp-tunnel-cli 是一个基于 bash 的 frp 隧道管理工具,旨在简化 frp 客户端的使用。通过简单的命令行操作,你可以快速创建、管理和监控 TCP 和 HTTP 代理隧道,无需手动编辑配置文件。

主要针对 TCP、HTTP 转发场景,特别适合开发者和系统管理员使用。

你可以修改成任何名称去执行脚本,个人喜欢 tun

🚀 功能特性

  • 动态创建隧道 - 支持 TCP 和 HTTP 代理类型
  • 智能端口管理 - 自动在 7010-7020 范围内分配可用端口
  • 自动服务管理 - 创建隧道后自动重启 frpc 服务
  • 配置文件管理 - 明确指定配置文件路径
  • 状态监控 - 实时查看隧道和服务状态
  • 彩色输出 - 友好的用户界面和错误提示

📦 安装

前置要求

  • 已安装 frp 客户端
  • bash 4.0+
  • macOS/Linux 系统

安装 frp

# macOS (使用 Homebrew)
brew install frp

# Ubuntu/Debian
sudo apt update
sudo apt install frp

# CentOS/RHEL
sudo yum install frp
#
sudo dnf install frp

安装 frp-tun

  1. 克隆项目:
git clone git@github.com:openapphub/frpc-cli.git
cd frpc-cli
  1. 安装脚本:
# 复制脚本到系统目录
sudo cp tun /usr/local/bin/tun
sudo chmod +x /usr/local/bin/tun

# 或者创建符号链接到你的 PATH 目录
ln -s $(pwd)/tun ~/bin/tun
  1. 确保脚本在 PATH 中:
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

🎯 使用方法

基本语法

tun <local_port> [name] [type]

参数说明

  • local_port: 本地端口号 (必需)
  • name: 隧道名称 (可选,默认为端口号)
  • type: 代理类型 (可选,默认为 tcp,支持 tcp/http)

使用示例

创建 TCP 隧道

# 创建名为 8080 的 TCP 隧道
tun 8080

# 创建名为 my-app 的 TCP 隧道,本地端口 3000
tun 3000 my-app

# 创建名为 api-server 的 TCP 隧道,本地端口 5000
tun 5000 api-server tcp

创建 HTTP 隧道

# 创建名为 web-server 的 HTTP 隧道
tun 8080 web-server http

# 创建名为 blog 的 HTTP 隧道,本地端口 4000
tun 4000 blog http

管理命令

列出所有隧道

tun list

输出示例:

[INFO] 当前隧道列表:

  名称: 8080
  类型: tcp
  本地端口: 8080
  远程端口: 7010
  访问地址: xx.x.xxx.xxx:7010

  名称: web-server
  类型: http
  本地端口: 8080
  访问地址: http://web-server.[subDomain]

停止指定隧道

tun stop <name>

示例:

tun stop my-app
tun stop 8080

重启 frpc 服务

tun restart

查看服务状态

tun status

输出示例:

[INFO] frpc 服务状态:
[SUCCESS] frpc 服务正在运行
进程信息:
  jinxm            39655   0.0  0.1 411323344  10688 s040  S+    4:04下午   0:00.02 frpc -c /opt/homebrew/etc/frp/frpc.toml

[INFO] 配置文件: /opt/homebrew/etc/frp/frpc.toml

显示帮助信息

tun help
#
tun -h
#
tun --help

🔧 配置说明

首次使用配置

在使用 tun 之前,你需要先配置 frp 客户端:

  1. 创建配置目录
mkdir -p ~/.frp/confd
  1. 创建主配置文件 ~/.frp/frpc.toml
# 基础连接配置
serverAddr = "your-server-ip"
serverPort = 7000
auth.method = "token"
auth.token = "your-token"

# 客户端标识(每个客户端必须唯一)
user = "your-client-name"
metadatas = { location = "YourLocation", env = "production" }

# 日志配置
log.to = "/tmp/frpc.log"
log.level = "info"
log.maxDays = 7

# 包含其他配置文件
includes = [
    "./confd/*.toml"
]
  1. 修改脚本配置: 编辑 tun 脚本,更新以下变量:
CONFD_DIR="$HOME/.frp/confd"
FRPC_CONFIG="$HOME/.frp/frpc.toml"
REMOTE_HOST="your-server-ip"
PORT_RANGE_START=7010
PORT_RANGE_END=7020

文件结构

~/.frp/
├── frpc.toml              # 主配置文件
├── confd/                 # 隧道配置目录
│   ├── *.toml            # 各个隧道的配置文件
│   ├── tcp_proxy.toml    # 示例 TCP 配置
│   └── http_proxy.toml   # 示例 HTTP 配置
└── tun        # 管理脚本

配置文件示例

TCP 隧道配置

[[proxies]]
name = "my-app"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3000
remotePort = 7013

HTTP 隧道配置

[[proxies]]
name = "web-server"
type = "http"
localPort = 8080
subDomain = "web-server"

🎨 输出说明

脚本使用不同颜色显示不同类型的信息:

  • 🔵 蓝色 [INFO]: 一般信息提示
  • 🟢 绿色 [SUCCESS]: 操作成功
  • 🟡 黄色 [WARNING]: 警告信息
  • 🔴 红色 [ERROR]: 错误信息

🚨 故障排除

常见问题

1. 端口已被占用

[ERROR] 隧道名称 '8080' 已存在,请使用其他名称

解决方案: 使用不同的隧道名称或端口号

2. 端口范围已满

[ERROR] 端口范围 7010-7020 已满,无法分配新端口

解决方案: 停止一些不用的隧道或修改端口范围

3. frpc 命令未找到

[ERROR] 未找到 frpc 命令,请确保 frp 已正确安装

解决方案: 安装 frp

brew install frp

4. 配置文件不存在

[ERROR] 配置文件不存在: /opt/homebrew/etc/frp/frpc.toml

解决方案: 检查配置文件路径是否正确

手动操作

如果脚本无法自动重启服务,可以手动操作:

# 停止 frpc 进程
pkill -f "frpc.*frpc.toml"

# 启动 frpc 服务
nohup frpc -c /opt/homebrew/etc/frp/frpc.toml > /dev/null 2>&1 &

📝 日志文件

frpc 日志文件位置:/frp/logs/frpc.log

查看日志:

tail -f /frp/logs/frpc.log

🔄 更新日志

v1.0.0

  • ✅ 初始版本发布
  • ✅ 支持 TCP 和 HTTP 隧道创建
  • ✅ 自动端口管理和服务重启
  • ✅ 完整的命令行界面

🤝 贡献

我们欢迎任何形式的贡献!如果你想要贡献代码、报告问题或提出建议,请:

  1. Fork 这个项目
  2. 创建你的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交你的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开一个 Pull Request

开发指南

  • 确保代码符合 bash 最佳实践
  • 添加适当的错误处理
  • 更新相关文档
  • 测试你的更改

🐛 问题报告

如果你发现了 bug 或有功能请求,请:

  1. 检查 Issues 是否已经存在
  2. 如果没有,请创建新的 issue
  3. 提供详细的错误信息和复现步骤

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

  • frp - 强大的内网穿透工具
  • 所有贡献者和用户

📞 支持

如有问题或建议,请检查:

  1. frp 是否正确安装
  2. 配置文件是否存在且格式正确
  3. 网络连接是否正常
  4. 端口是否被占用

注意: 使用前请确保 frp 服务端已正确配置并运行。

About

A convenient frp tunnel management tool that supports dynamic creation, management, and monitoring of frp proxy tunnels.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages