当长时间运行的命令用 Noti 完成时,在您的桌面或手机上获取通知

[ad_1]

曾经想在长时间运行的进程/命令完成时收到通知,不仅在您的桌面上,而且在您的手机上? Noti 可以做到这一点。

Noti 是一个适用于 macOS、Linux 和 Microsoft Windows 的命令行工具,用于监控进程/命令,并在它运行完成后在您的桌面或手机上触发通知。

支持的通知:

  • 桌面通知(横幅)
  • 演讲
  • BearyChat
  • 密钥库
  • 最重要的
  • 推子弹
  • 推倒
  • 推安全器
  • 简单推送
  • 松弛
  • 电报
  • 朱利普
  • 特威利奥

所有这些受支持的通知都适用于 macOS、Linux 和 Windows。

值得注意的是,如果您只想在 Linux 上完成一个长时间运行的命令时收到桌面通知,您可以简单地运行 command; notify-send Done (例如 sleep 3; notify-send Done)。

默认情况下,Noti 仅显示文本“完成!” 当一个长时间运行的任务完成时,但这可以扩展。 您可以指定通知标题(默认为实用程序名称),设置通知消息(默认为“完成!”;从标准输入读取 -),并在通知消息中显示执行时间。

您可以在命令的开头使用 Noti,例如:

noti sleep 3

在命令之后,例如:

sleep 3; noti

您甚至可以在命令已经启动后使用 Noti,方法是获取进程 PID,然后使用以下命令:

noti --pwatch PID

或按 Ctrl + z 在进程启动后暂时挂起它,然后使用以下命令恢复它:

fg; noti

有关 Noti 的更多信息,包括如何使用各种服务设置 Noti 通知、Noti 环境变量等,请参阅此页面。 在测试这个时,我注意到这个页面有点过时了。 例如,Slack 不再允许创建遗留测试人员令牌。 因此,您可能还想查看此处的 Noti 手册页和此处的 noti.yaml man。

继续阅读以了解如何安装和配置 Noti,包括设置 Noti 以在长时间运行的命令完成时通过 Telegram 和 Slack 在您的移动设备上通知的完整说明。

如何在 Linux 上每 X 秒重复一次命令

安装和配置 Noti

使用上述按钮链接的 Noti 安装说明包含多种安装此工具的方法。 如果您想直接获取二进制文件,只需转到该工具的 GitHub 发布页面即可。

在 Linux 上安装 Noti 的最简单方法是从发布页面下载二进制文件,解压缩存档,然后安装 noti 二进制到 /usr/local/bin 使用(假设您已经在您的主文件夹中提取了 Noti 二进制存档,并且您在您的主目录中打开了终端):

sudo install noti*linux-amd64/noti /usr/local/bin

默认情况下,Noti 使用桌面通知(横幅)。 下面我将向您展示如何配置 Noti 以在长时间运行的进程完成时发送通知,在您的移动设备上通过 Slack 和 Telegram,因为这是我使用的。 如果您想将它与其他服务一起使用,您需要使用说明自行配置(尽管在我看来有些不完整,并且在某些情况下已经过时,例如您不能再创建 Slack 令牌,您必须使用一个 Slack 应用程序)从这里。

Bit 是一个带有交互式提示的现代 Git CLI

配置 Noti 以在长时间运行的命令完成运行时通过在 Telegram 上发送消息来通知您

要让 Noti 在长时间运行的命令运行完毕后向您发送 Telegram 消息,您需要一个 Telegram chatIdtoken. 这适用于 Telegram 聊天或频道。 在我下面的说明中,我们将使用 Telegram 频道。

1. 创建一个 Telegram 频道。

您需要做的第一件事是创建一个 Telegram 频道。 它可以有您想要的任何名称和描述。

2. 创建一个 Telegram bot 并获取 HTTP API 访问令牌。

接下来,您需要使用 BotFather (@botfather) 创建机器人并获取 HTTP API 访问令牌。

为此,请与@botfather 开始聊天,然后键入 /start 在聊天中查看可用命令等。现在输入 /newbot 创建一个新机器人,然后按照说明操作(您需要为新机器人设置名称和用户名)。 完成后,@botfather 将显示访问 HTTP API 的令牌。 复制此令牌,因为我们稍后会需要它。

3. 将步骤 2 中创建的 Telegram bot 添加到您的频道并获取 chatId.

现在我们有了一个令牌,但我们还需要获取 chatId。

将您在第 2 步中创建的机器人添加到您的新 Telegram 频道(转到该频道,然后从选项中选择 Add users 并搜索您创建的机器人)。

添加机器人后,在您的 Telegram 频道中输入一条消息。 这对于获得 chatId.

现在你可以得到 chatId 通过访问以下链接,您必须对其进行编辑:

https://api.telegram.org/botXXX:YYYYY/getUpdates

代替 XXX:YYYYY 使用您在第 2 步中获得的机器人的 HTTP API 令牌。

此链接将显示一堆文本,您将在其中找到:

chat":{"id":-100999999999}

这里的 id 是你的 chatId 您需要与 Noti 一起使用。 那 - 数字开头的符号是数字的一部分 chatId,因此请确保您也使用它,而不仅仅是数字。

4. 创建 Noti 配置文件(如果您还没有创建)并添加 Telegram。

现在我们知道电报 chatId 和 HTTP API token,创建Noti配置文件,名为 noti.yaml~/.config/noti/

使用文本编辑器打开此文件并粘贴以下内容:

telegram:
  token: THE_HTTP_API_TOKEN_GOT_UNDER_STEP_2
  chatId: 'THE_CHAT_ID_GOT_UNDER_STEP_3'

示例(编辑为不包含我的真实 tokenchatId):

telegram:
  token: 1598888700:AEEijJJcsABpYR1LdJ4_Llkr1Vq48vxAUSg
  chatId: '-10099999999999'

使用以下命令在长时间运行的命令完成运行时测试 Noti 发送 Telegram 消息:

sleep 3; noti --telegram

不用担心,每次使用Noti时都不需要添加–telegram命令行参数。 你可以导出 NOTI_DEFAULT 使用要触发的通知类型列表,例如使用桌面横幅通知和电报通知,您需要导出 NOTI_DEFAULT="banner telegram".

添加 export NOTI_DEFAULT="banner telegram" 给你的 ~/.profile 文件以使更改永久化。 显然,编辑 NOTI_DEFAULT 通知类型为您要使用的内容。 更改后退出并重新登录 ~/.profile 文件以使用新设置。

您可能还感兴趣:如何使用 find 查找最近 N 天或几分钟内修改过的文件

将 Noti 配置为通过在 Slack 上发送消息来在长时间运行的命令完成运行时通知您

Noti 文档页面提到为测试和开发创建 OAuth 令牌,但 Slack 不再支持此操作。 取而代之的是,我们需要创建一个 Slack 应用程序。

1. 使用网络浏览器登录 Slack。

2. 创建一个 Slack 应用程序。

前往 https://api.slack.com/apps/new 并使用您想要的任何名称创建一个新的 Slack 应用程序。

3. 激活传入 Webhook。

创建 Slack 应用程序后,您将被重定向到新应用程序的设置页面。 这里(有 Basic Information 在左侧边栏上选择),展开 Add features and functionality 部分,然后单击 Incoming Webhooks. 在这里,打开旁边的开关 Activate Incoming Webhooks.

4. 创建传入 Webhook。

在底部 Incoming Webhooks 页面,点击 Add New Webhook to Workspace,然后选择一个频道或您自己(后者在 Direct Messages)。 您将在此处收到通知。 我在这里选择了我的用户名。

[[Edit]] Slack API 文档中也解释了创建 Slack 应用程序和传入 Webhook 的步骤。

创建传入 Webhook 后,您将被重定向到 Incoming Webhooks 页。 在此页面的底部,您应该看到 Webhook URL. 复制这个网址。

5. 创建 Noti 配置文件(如果您还没有创建)并将 Slack 添加到其中。

现在我们已经获得了 Slack Webhook URL,创建 Noti 配置文件,名为 noti.yaml~/.config/noti/

使用文本编辑器打开此文件并粘贴以下内容:

slack:
  appurl: 'https://hooks.slack.com/services/xxx/yyy/zzz'

在这里,替换 appurl 使用您在第 4 步中获得的 Slack Webhook URL 的值,然后保存文件。

使用以下命令在长时间运行的命令完成运行时发送 Slack 通知的测试通知:

sleep 3; noti --slack

在输入时始终使用 Slack 发送通知 noti (所以你不必输入 noti --slack 每次你想在 Slack 上收到通知时),你可以导出 NOTI_DEFAULT 使用要触发的通知类型列表,例如使用桌面横幅通知和 Slack 通知,您需要导出 NOTI_DEFAULT="banner slack".

添加 export NOTI_DEFAULT="banner slack" 给你的 ~/.profile 文件以使更改永久化。 显然,编辑 NOTI_DEFAULT 通知类型为您要使用的内容。 更改后退出并重新登录 ~/.profile 文件以使用新设置。

Bash 历史记录:如何在执行每个命令时显示时间戳(日期/时间)

[ad_2]

Related Posts