如何从 Linux CLI 向 iOS 和 Android 推送/发送消息
开发人员和系统管理员的一项基本任务是获取有关服务失败或磁盘空间不足以及其他严重故障的警报通知。让我们看看如何向搭载 Apple iOS 或 Google Android 手机的移动设备发送或推送直接消息。
如何实时向 iOS 和 Android 推送/发送消息
我们可以使用AWS SNS推送通知服务直接向移动设备上的应用程序发送警报。但是,今天我将使用名为Pushover的简单应用服务。这是一款简单的应用程序,可在 Android、iPhone、iPad 和桌面(包括 Android Wear 和 Apple Watch)上获取实时通知。让我们看看如何使用 Linux 向 Android 或 iOS 设备发送通知。
为什么要从 Linux CLI 发送推送通知?
作为一名独立开发人员和 Linux 系统管理员,我需要一种简单的方法,使用 API 获取我的业余项目通知。我可以收到备份失败或 Nginx 服务因问题而过载或 MySQL 只读副本不同步的通知。我的搜索最终选择了 Pushover。但是,它不是一项免费服务。要为自己或小团队使用 Pushover,只需在每个平台上支付 5 美元的一次性购买费用。您每月可以发送 7,500 条消息,这足以满足我的需求。他们还有一个选项,可以向一组开发人员和 IT 团队发送消息。我的标准很简单:
- 我需要对 Perl、Python 和 bash/shell 脚本的支持。
- 必须推送通知到 iPhone。
- 一定不会很贵。
Pushover 服务似乎满足了我的所有要求。话不多说,让我们通过一些示例来亲手实践一下。
步骤 1 – 注册 Pushover
首先下载 Pushover设备客户端:
- Android 版本
- iOS(iPhone、iPod Touch 和 iPad)版本
确保您订阅服务或获取七天试用帐户。登录后,注册您的 cli 应用程序,设置其名称,并获取API 令牌。
步骤 2 - 创建 Shell 脚本包装器 API 脚本
新建一个shell脚本如下:
$ vi ~/bin/cli_app.sh
附加代码:
#!/usr/bin/env bash # Purpose: Send notification to phone - push/send message ios and android using API from my Linux box/vm/server # Author: Vivek Gite # Set API stuff _token='YOUR-API-TOKEN-HERE' _user='YOUR-USER-NAME-HERE' # Bash function to push notification to my iPhone # yes you can push/send message android too using the same function push_to_mobile(){ local t="${1:-cli-app}" local m="$2" [[ "$m" != "" ]] && curl -s \ --form-string "token=${_token}" \ --form-string "user=${_user}" \ --form-string "title=$t" \ --form-string "message=$m" \ https://api.pushover.net/1/messages.json }
接下来,使用源命令:
$ source ~/bin/cli_app.sh
测试一下:
$ push_to_mobile "bash-notification" "This is a test. Job foo failed on $HOSTNAME @ $(date)"
我会立即在手机上收到通知:
Shell 从 Linux 命令行向我的 iPhone 发送推送通知
如何通过脚本向手机发送电子邮件和推送通知
我们可以从 shell 脚本中简单地使用 sendmail 命令或 mail 命令,如下所示:
#!/usr/bin/bin bash # Wrapper backup-script.sh by Vivek Gite under GPL v2.0+ # ------------------------------------------------------- # # Set email stuff # warning: must need pre-configured smtpd such as sendmail/postfix # subject="rsnapshot backup job failed at $HOSTNAME" log_file="/path/to/my.log.txt" from="webmaster@example.com" to="webmaster@example.com" # # start daily backup and set log to ${log_file} # all reports created by rsnapreport.pl script including ERROR # /usr/bin/rsnapshot daily 2>&1 | /root/bin/rsnapreport.pl > "${log_file}" # Catch errors status=$? alogs="$(grep -E -wi '^ERROR:|ERROR|WARNING|WARNING:' $log_file)" # If failed, notify using both email and push message to my phone if [ $status -ne 0 ] || [ "$alogs" != "" ]; then mail -A "$log_file" -s "$subject" -r "$from" "$to" <<< "Backup script failed with error. Check attached log file" # # Push/send message to iOS and Android using Pushover API too # source ~/bin/cli_app.sh push_to_mobile "backup-script" "$subject. See $to email for detailed failed log." >/dev/null fi
有关从 CLI 发送电子邮件的更多信息,请参阅以下教程:
- UNIX / Linux:使用 mail 命令编写 Shell 脚本
- 从 Unix / Linux 命令发送带附件的电子邮件 [ Shell 提示符 ]
- 如何在 Unix / Linux 中使用 mail 命令发送文本文件的内容
结论
到目前为止,Pushover 服务和应用对我来说效果很好。我可以使用 shell/Perl/Python 脚本轻松地向 iOS 和 Android 设备发送/推送消息。查看我的Twitter 帖子中的所有其他建议: