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 [email protected]: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

No packages published

Contributors 2

  •  
  •  

Languages