清理命令的输出以通过管道发送到通知发送

清理命令的输出以通过管道发送到通知发送

Ubuntu 18.04

ExpressVPN 的 Linux 版本没有 GUI 或图标。因此我整理了一个 .desktop 文件,然后在任务栏上添加了可点击的按钮来触发它们。.desktop 文件会触发脚本,这些脚本会运行命令来连接 VPN、断开 VPN 连接或显示指示当前状态的弹出消息。

我需要一些关于状态的建议。获取状态的命令是:

expressvpn status

在终端中运行该命令时,如果 VPN 已断开连接,您将看到以下内容:

未连接

如果 VPN 已连接,您将看到:

连接的

我的任务栏按钮触发此脚本:

#!/bin/bash
MESSAGE="expressvpn status"
notify-send --expire-time=500 "`$MESSAGE`"

现在,这有效了。我得到了我需要的信息。但有些事情我不喜欢。这不是关键问题,但我想了解为什么会发生这种情况以及是否可以改变。

如果 VPN 断开连接,它就可以正常工作,我会看到一个弹出窗口,显示“未连接”:

清除弹出消息

但是如果连接了 VPN,我看到的内容就相当丑陋了。它看起来像这样:

丑陋的弹出消息

如果我将相同的输出写入文本文件,它将包含以下文本:

[1;32;49mConnected to UK - East London
[0m
   - If your VPN connection unexpectedly drops, internet traffic will be blocked to protect your privacy.
   - To disable Network Lock, disconnect ExpressVPN then type 'expressvpn preferences set network_lock off'.

理想情况下,我希望它只包含上面屏幕截图中显示的绿色线条 - “已连接至 [任何可用的连接]“。

有任何想法吗?

谢谢!

答案1

该脚本使用ANSI 转义代码给输出着色。讨论如何摆脱它们这里一般来说。

如果你能够安装软件包,请ansi2txtcolorized-logs这个答案将会把它们剥去。

类似的东西expressvpn status | ansi2txt | grep -i connected应该会给出您可以使用的输出。

相关内容