在完成任何给定的随机任务时添加命令来运行脚本需要什么?

在完成任何给定的随机任务时添加命令来运行脚本需要什么?

我正在玩推倒,并且认为如果我可以将它用作任何随机命令的参数,那就太酷了,这样它就会在任务结束时运行一个 Pushover 脚本,无论该任务是什么。

我不知道这是否可能,或者我将如何去做,但我想学习。

RasPi Stack Exchange 网站上的这个问题这让我开始思考这个问题。但我认为它有很多用途,例如让您知道编译作业何时最终完成,以及是否成功。

我想它可能看起来像这样:

     $ apt-get -b source packagename -pushover "Compile job complete."

我们的想法是,任何命令之后的参数“-pushover [在此处输入消息文本]”都会执行 Pushover 脚本,并使用他们的 API 通过他们的应用程序通知您。

所以我想问题是,可以用这种方式来做吗?如果是这样,我从哪里开始?如果没有,是否有更好的方法来完成同样的事情,而不受您正在运行的命令的限制?

我并没有锁定将其用作命令参数的想法,但我确实想要一种使用任何命令运行它的方法,而无需为每个命令编写单独的脚本。

我是 Linux 新手,所以如果这是一个不可行的想法,我也会接受这个答案,只要有合理的解释说明为什么它不起作用。

答案1

你可以反过来做:

$ pushover-notify "This is my message" command arg1 arg2

你的脚本pushover-notify可能是这样的:

#!/bin/sh
TOKEN=your_token
USER=your_user
MSG="$1"
COMMAND="$2"
shift 2
if "$COMMAND" "$@" ; then
   # here run your send-message script, with message "$MSG". for example:
   curl -s \
        -F "token=$TOKEN" \
        -F "user=$USER" \
        -F "message=$MSG" \
        https://api.pushover.net/1/messages
else
   # here send some message indicating failure, or don't do anything. for example:
   curl -s \
        -F "token=$TOKEN" \
        -F "user=$USER" \
        -F "message=command failed: $COMMAND $@" \
        https://api.pushover.net/1/messages
fi

答案2

我让我的程序向我发送电子邮件,或者在完成时让控制台发出蜂鸣声。我使用 && 字符告诉控制台等待上一个命令完成,然后用另一个 & 结束整个过程,以重新获得对控制台的控制。

所以你的例子看起来像这样:

apt-get -b 源包名称 && sleep 10 && Pushover “编译作业完成。” &

为了更好地衡量,我添加了睡眠 10。注意我不知道 Pushover 语法。

另外,如果不使用 Pushover,您可能喜欢使用 mailx 向您发送电子邮件或 txt 消息,或者使用 echo -a "\a" 来让控制台发出蜂鸣声。

相关内容