如何监控特定命令或者为其添加额外功能?

如何监控特定命令或者为其添加额外功能?

我正在尝试实现移动推送通知(利用 Docker ntfy 服务)以实现自动系统更新和 Timeshift 快照创建等场景。

在我的案例中,这些命令都没有定期安排;因此,Crontab 不是一个可行的选择(只是一个简短的免责声明)。我的目标是接收有关 Timeshift 准备快照等事件的通知。任务成功完成时,应该发送推送通知。如果发生故障,我也希望收到通知。

我的本地 Docker ntfy 服务运行顺畅。但是,我有兴趣在 Timeshift 操作之前和之后合并其他命令。我考虑过使用别名,但它们必须具有相同的名称,我认为这是不可行的。

修改命令可能会导致问题,如图所示在下面的帖子中

对于如何解决这种情况有什么建议吗?

预期结果:

  1. 系统启动 Timeshift 流程。
  2. 推送了包含相关评论的通知。
  3. 快照已成功创建。
  4. 完成后将发送另一个推送命令。

重要的是 - 我想保留通过特定命令提供的所有功能。因此,对于带有各种选项和标志的 Timeshift,它们应该保留在原处。

答案1

将命令包装timeshiftbash脚本中,然后调用该脚本。例如:

#!/bin/bash
# set up environment (PATH, ...)
#
notify-send timeshift "Timeshift starting"
timeshift ...
err=$?
if [[ 0 -ne $err ]] ; then
  printf -v msg "failed with error code %d" $err
else
  msg="succeeded"
fi
notify-send timeshift "Timeshift $msg"

更改您调用的所有配置、.desktop文件、脚本等,以timeshift改为调用脚本。

或者

你可以玩游戏$PATH- 把你的timeshift脚本(为了使其工作,你必须调用 itv )放在比实际timeshift更早的目录中;使用绝对路径()在你的脚本中调用实际;进行更改,以便它们在自动启动时生效。⁸$PATHtimeshifttimeshift/usr/bin/timeshift$PATH~/.profile

答案2

@waltinator 我修改了你的代码,结果如下:

#!/bin/bash

curl -d "TIMESHIFT Creating snapshot.. " local_ip:port/Ubuntu

if [ -n "$SUDO_PASSWORD" ]; then
    result=$(echo "$SUDO_PASSWORD" | sudo -S /usr/bin/timeshift $@)
    err=$?
    
    if [[ 0 -ne $err ]] ; then
        curl -d "TIMESHIFT - ERR: $result"  local_ip:port/Ubuntu
    else
        curl -d "TIMESHIFT - snapshot created!" local_ip:port/Ubuntu
    fi
    
else
    curl -d "TIMESHIFT SUDO_PASSWORD not exists!!! " local_ip:port/Ubuntu
fi

我的例子里的文件名是timeshift_ntfy.sh。 当我直接从 bash 运行它时,它工作得很好!到目前为止,我非常高兴。

但我在这里被困住了。

在 ~/.profile 中更改 $PATH,以便自动启动时生效

我尝试在 ~/.profile 或 ~/.bashrc 文件中添加以下行:

export PATH="/home/zawier/Skrypty/timeshift_ntfy:/home/zawier/Skrypty/timeshift:$PATH"

我一直以为这是正确的方法,但当我看到输出来自原始时间移位时,我错了。当然我已经这样做了:

source ~/.profile
source ~/.bashrc

不幸的是没有运气:(我在这里做错了什么?

相关内容