我正在玩推倒,并且认为如果我可以将它用作任何随机命令的参数,那就太酷了,这样它就会在任务结束时运行一个 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" 来让控制台发出蜂鸣声。