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命令行工具

Download history 188/week @ 2024-03-28 55/week @ 2024-04-04

每月 75 次下载

MIT 许可证

77KB
2K SLoC

Beam

Crates.io CI codecov

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

模式匹配

如果您想为符合特定模式的主机名集选择特定配置文件,可以指定 yesDo 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命令

  1. 打开模糊查找视图以选择主机
$ beam
  1. 列出所有可用节点的名称
$ beam list --format names
host1.example.com
host2.example.com
  1. 直接通过主机名连接到主机
$ beam connect server.example.com
  1. 手动选择要使用的配置文件
$ 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 mainskim将搜索匹配srcmain的项目。
  • |表示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