飞书命令行工具cli怎么用?程序员干活效率翻倍

飞书下载 ·
飞书命令行工具cli怎么用?程序员干活效率翻倍

下载与安装飞书命令行工具

我最早接触飞书 CLI 是因为团队项目管理和自动化通知的需求。以前写脚本往飞书群里丢消息得调网页钩子或者 SDK,折腾半天还不一定稳定。后来发现飞书官方推出了命令行工具,直接从飞书下载站就能拿到安装包。点本页下载按钮,会得到一个压缩包,里面是二进制文件,Windows 下是.exe,macOS 和 Linux 下是二进制文件,没后缀。解压后放到 PATH 里就行,比如 macOS 用户扔进 /usr/local/bin。我一开始图省事直接放桌面,结果每次 cd 路径烦死,后来老老实实放系统路径。

安装后跑下 feishu 或者 lark(看你下载的版本,名字可能叫 feishu),如果没输出“command not found”就成功了。我踩过一次坑:下载的包名是 feishu_cli_linux_amd64.tar.gz,解压出来文件名带版本号,比如 feishu-1.2.3,直接输这串跑不了。解决办法是重命名成 feishu 或者 ln -s 创建一个软链接。Windows 用户注意把 .exe 路径加到系统环境变量,不然 PowerShell 里输命令没反应。还有就是权限问题,Linux 下别忘了 chmod +x。

安全纯净无广告·无捆绑全平台支持Win·Mac·手机持续更新紧跟官方新版本

登录与认证配置

CLI 拿到手第一件事是登录。飞书 CLI 不像某些工具直接用账号密码登录,它走 OAuth 流程。我第一次用的时候懵了,以为输个邮箱密码就行,结果输入 login 命令后弹了个浏览器窗口,让我扫码授权。这里有个细节:如果服务器没图形界面,或者你连的是 SSH 远程,浏览器弹不出来。解决方案是用参数 --auth-link 手动获取链接,复制到本机浏览器打开,授权后会有一个临时代码,粘贴回终端就完成了。我最初不知道,卡了半小时,后来翻文档才明白。

配置完登录信息会存在 ~/.feishu/config 文件里。你可以在机器上只登录一次,然后把这个文件复制到其他服务器,省去重复登录。但注意安全,别把 token 泄漏出去。我有回不小心把 ~/.feishu 整个目录传到 GitHub 公开仓库,数小时后才反应过来,赶紧删掉重生成 token。另外 token 有效期一般 24 小时,长期跑的任务最好配合定时刷新,或者用 service account 模式。配置多个飞书账户时可以加 --profile 参数切换,就像 Git 的多用户管理一样。

发送消息与通知

日常工作里用得最多的就是发消息。比如备份脚本跑完往群里通知结果,或者监控程序告警。基本命令格式是 feishu message send --receiver chat_id --content “你好”。chat_id 怎么拿?在飞书群里@机器人,然后发 /getid,机器人会回一串数字。我第一次找不到这个群 ID,瞎猜了个组名,结果消息一直发不出去,报错“invalid receiver”。后来老老实实加群里的飞书机器人自己取 ID。

如果你不想一个个群配置,可以设成发送给某个用户,用 open_id 或者 email。给用户发私聊特别适合告警,不怕漏看。内容格式上支持富文本,像标题、引用、列表都能嵌进去。用参数 --msg-type 指定 interactive 或者 text。我一般写自动化脚本喜欢用 text,简单直接。有回需要发一个带表格的周报,试了下 interactive 类型,得写 JSON 结构,稍微麻烦,但效果确实好,直接在群里显示成卡片,不用再渲染 Markdown。

文件上传与下载管理

飞书 CLI 还能上传下载文件。我负责的测试服务器经常需要往群里丢日志压缩包,手动拖拽太慢。后来用命令行一行搞定:feishu upload --file /var/log/app.log.gz --receiver chat_id。上传后提示 file_key,你可以配合文件下载命令分享出去。注意文件大小限制,飞书普通群文件最大 1GB,超过了会静默失败。我第一回传了一个 2GB 的数据库备份,Z 没报错,但群里死活看不到文件。后来才查到是超出了限制。

下载方面也省事,参数类似:feishu download --file-key abc123 --output-dir ./temp。你可以把群里的设计图或者配置文件直接拉到服务器。但有个坑:下载的文件名是哈希值,没原始名字,得手动重命名。解决方案是先用 list 命令查文件元数据,拿到原始文件名再下载。还有就是目录权限,下载到 /tmp 没问题,但要存到系统目录容易报许可错误。我习惯把下载目录设成当前工作目录的 .download 文件夹,自己清理也方便。

管理群组与成员

如果你管着十几个飞书群,加人踢人、设置公告这类操作手动做太累。CLI 提供了群管理能力。比如 feishu group add-member --group-id xxx --user-id yyy 能快速加人。group-id 怎么拿?同样通过机器人 /getid 获取。我有个从其他平台迁过来的场景,需要把 100 个用户踢出旧群、加入新群,用 for 循环写个脚本几分钟搞定,要是手动点鼠标得疯。

不过小心权限:普通成员不能管理群,只有群主或者管理员才能跑这些命令。我第一次试的时候用的个人 token,结果被提示无权限,哭笑不得。后来换用管理员账号的 token 才正常。另外批量操作时注意 API 限频,飞书 CLI 底层调用的也是 API,短时间请求太密集会被限流。我当初离职整理群成员时,一次跑 500 个添加请求,结果中间卡住,报了一串 429。解决办法是加 sleep 0.5 秒延迟,稳如老狗。还有删除成员时要三思,没有确认提示,一不小心就把同事踢了,只能手动再加回来。

自动化脚本集成技巧

CLI 最爽的是能嵌入 Shell 脚本。比如每天凌晨备份数据库,备份完成自动调用 feishu message send 发通知。具体写法:备份命令后面跟 &&,再接 feishu 命令。如果备份失败,就发告警:备份失败,请检查。有个小技巧是加个 trap 捕获脚本异常,确保无论成功还是失败都能通知到。我之前写脚本直接只在末尾加通知,结果中途磁盘写满就没执行到那行,一晚上没人知道失败了。

还能结合 cron 定时跑。我在 crontab 里加一行:0 2 * * * /usr/bin/feishu message send --content “每日巡检完成”。前提是 token 在 crontab 的环境里也得有效。最好在 cron 脚本开头 export HOME=目录,否则找不到 ~/.feishu 配置。Crontab 默认环境变量很少,我掉过这个坑后,每个 cron 脚本第一行都先定义 HOME 和 PATH。另外长脚本建议把 feishu 命令写成函数,封装 retry 逻辑,网络偶尔超时不至于中断整个流程。

常见报错与排查指南

用久了总会碰到问题。最常见的是“invalid token”或者“token expired”。检查一下是不是超过 24 小时没重新登录了,重新跑一下 feishu login。有时候 token 没过期但提示权限不够,八成是 token 关联的账号不是群管理员。换个管理员账号登录或者让群主把你的机器人提升为管理员即可。

文件上传偶尔会报“network error”。我在内网服务器上遇到过,一开始以为是飞书服务器挂了,后来发现是代理配置冲突。CLI 默认走系统代理,但如果你设了 http_proxy,而飞书 API 不支持代理,就得 unset 一下。具体是在命令前加 unset http_proxy && unset https_proxy。还有一些诡异问题,比如输 feishu 没反应但没报错,可能是二进制版本和系统架构不匹配。我有台老 ARM 服务器下了 x86 的包,执行后卡死。确认架构后重新下载 arm64 版本就正常了。

最后,如果遇到命令行参数没反应,多试试 --help。飞书 CLI 的文档虽然不算完整,但 help 输出基本涵盖了常用子命令。我工作流的 80% 功能都是靠 --help 摸清楚参数名的。别自己瞎猜,我猜错过 --file-path 写成 --file 之类,报错后才改回来。另外社区里有人在 GitHub 上总结了常用命令,可以参考,但版本更新别照搬。