26 个版本 (4 个破坏性更新)
0.5.0 | 2022 年 9 月 5 日 |
---|---|
0.4.5 | 2022 年 5 月 25 日 |
0.4.2 | 2022 年 3 月 9 日 |
0.2.4 | 2021 年 12 月 31 日 |
#1449 在 命令行工具
每月 75 次下载
77KB
2K SLoC
Beam
Beam me up Ferris!
什么是 Beam?
Beam 是 Teleport CLI 的接口。它使用 Rust 编写的模糊搜索器 skim,提供了一个良好的搜索和过滤界面。
目录
安装
通过 Brew
要使用 Homebrew 安装 Beam,请运行以下命令
brew tap MichaelMandel26/beamcli
brew install beam
这还将自动安装 Teleport CLI,因为它是 Beam 的依赖项。
通过 Cargo
在通过 cargo 使用 Beam 之前,请确保已安装 Teleport CLI。
要通过 cargo 安装 Beam,您必须安装 Rust。 Rustup 是推荐的方式。
然后您可以通过运行以下命令进行安装
cargo install beamcli
配置
在使用 Beam 之前,您必须配置默认配置文件。
$ beam configure
✔ Profile name · myProfile
✔ Do you want to auto-select this profile, using a regex pattern on the hostname? · no
✔ Proxy · teleport.example.com
✔ Username · dzefo
✔ Authentication Method · default
✔ Cache TTL · 86400
✔ Do you want to only show specific labels? · no
如果您想使用 SSO 作为您的身份验证方法,您必须将 sso
设置为 Authentication Method
如果您只想显示特定的标签,可以将 yes
设置为 Do you want to only show specific labels?
$ beam configure
...
✔ Do you want to only show specific labels? · yes
✔ Label · env
✔ Add another label? · yes
✔ Label · application
✔ Add another label? · no
模式匹配
如果您想为符合特定模式的主机名集选择特定配置文件,可以指定 yes
为 Do you want to auto-select this profile, using a regex pattern on the hostname?
$ beam configure
Configuring profile dev-profile:
✔ Do you want to auto-select this profile, using a regex pattern on the hostname? · yes
✔ Regex Pattern for auto-selecting profile · \b(quality|staging)\b.*
...
然后 Beam 将匹配以下主机名中的任何一个
- quality.app.example.com
- staging.app.example.com
如果有多个配置文件与特定模式匹配,Beam 将选择优先级最低的配置文件。您可以通过在您的 profiles.toml
文件中将 priority
属性添加到配置文件中来配置每个配置文件的优先级。
没有优先级数字的配置文件只有在没有其他具有定义优先级的匹配配置文件的情况下才会被选择。
如果主机名不匹配任何配置文件模式,Beam将使用默认配置文件。
重要:在运行
beam
命令时,由于在选择之前不知道主机名,Beam将只使用默认配置文件中的代理。当使用beam connect <hostname>
命令时,Beam将使用命令行中的主机名,并且能够使用配置文件中的代理。
缓存
默认情况下,Beam会将从Teleport接收到的节点列表缓存24小时。为了避免使用缓存,您可以使用--clear-cache
或-c
标志
$ beam -c
您可以使用Cache TTL
选项更改缓存持续时间。以下示例将节点列表缓存1小时
$ beam configure
...
✔ Cache TTL · 3600
端口转发
如果您想将特定端口转发到本地主机,可以将以下属性添加到您的配置文件之一中。
[profile.mysql]
...
enable_port_forwarding = true
listen_port = 3306
remote_host = "127.0.0.1"
remote_port = 3306
使用此功能,例如,每次连接到包含单词mysql
的节点时,都可以转发端口3306
。这将使您能够使用数据库管理桌面应用程序检查节点上运行的数据库。
[profile.mysql]
default = false
proxy = "teleport.example.com"
username = "firstname.lastname"
auth = "sso"
cache_ttl = 86400
enable_port_forwarding = true
host_pattern = "(._mysql._)"
listen_port = 3306
remote_host = "127.0.0.1"
remote_port = 3306
使用方法
一些有用的Beam命令
- 打开模糊查找视图以选择主机
$ beam
- 列出所有可用节点的名称
$ beam list --format names
host1.example.com
host2.example.com
- 直接通过主机名连接到主机
$ beam connect server.example.com
- 手动选择要使用的配置文件
$ beam --profile myProfile
搜索语法
Beam在其模糊搜索中底层使用skim。搜索语法与skim相同。有关更多信息,请参阅skim。
令牌 | 匹配类型 | 描述 |
---|---|---|
text |
fuzzy-match | 匹配text 的项目 |
^music |
prefix-exact-match | 以music 开头的项目 |
.mp3$ |
suffix-exact-match | 以.mp3 结尾的项目 |
'wild' |
exact-match (quoted) | 包含wild 的项目 |
!fire |
inverse-exact-match | 不包含fire 的项目 |
!.mp3$ |
inverse-suffix-exact-match | 不以.mp3 结尾的项目 |
skim
也支持令牌的组合。
- 空白字符的含义是
AND
。对于术语src main
,skim
将搜索匹配src
和main
的项目。 |
表示OR
(注意|
周围的空格)。对于术语.md$ | .markdown$
,skim
将搜索以.md
或.markdown
结尾的项目。OR
具有更高的优先级。因此,readme .md$ | .markdown$
被分组为readme AND (.md$ OR .markdown$)
。
将补全添加到您的 shell 中
要向您的shell添加完成,可以使用以下命令之一
$ beam completions zsh > ~/.zfunc/_beam
$ sudo apt install bash-completions
$ mkdir -p ~/.local/share/bash-completion/completions
$ beam completions bash > ~/.local/share/bash-completion/completions/beam
$ mkdir -p ~/.config/fish/completions
$ beam completions fish > ~/.config/fish/completions/beam.fish
依赖项
~22–38MB
~643K SLoC