我在远程Shell上运行了很长的过程。我想在流程完成后触发通知。这个答案是不够的,因为long命令在远程服务器上,因此它不能调用terminal-notifier。
通过使用iTerm2触发器,我可以接近期望的结果。例如,如果我在远程服务器上运行以下命令,并为__FINISHED__设置了iTerm2触发器:
./long_process && echo "\__FINISHED__"
这具有令人讨厌的功能,即每次我在编辑器或代码中滚动回该命令时(我正在emacs shell中运行代码),都会触发通知。
一种解决方案可能是iTerm2可以识别的某种文本通知,但不会出现在emacs回滚缓冲区中。
您尚未指定所需的通知类型,也未指定远程服务器正在运行的操作系统,因此在此我必须做一些假设。我将假设您真的不关心通知的类型,只要您收到通知并且远程服务器正在运行某种形式的* nix。
给自己发送电子邮件。如果sendmail
已在服务器上配置,则可以执行
./long_process && echo "Job done" | sendmail [email protected]
ssh返回本地计算机(假设有可能)并使其与您对话。有关使OSX发出哔哔声的更酷方法,请参见此处。
./long_process && ssh [email protected] say "Yo! All done"
或者
./long_process && ssh [email protected] terminal-notifier -message "Job finished!" -title "Info"
如果您是从动态IP连接的,并且已经配置了路由器以便可以SSH到该动态IP,则可以执行此操作(假设您当前仅从远程计算机连接):
ip=$(who | grep $USER | perl -lne 's/\\((.+?)\\)\s*$//; print "$1"' | tail -n 1) &&
./long_process && ssh you@$ip terminal-notifier -message "Job finished!" -title "Info"
您可以按常规方式设置无密码的ssh 。它不应受到动态IP的影响。完成此操作后,上面的代码将起作用。
使用推覆并将通知发送到您的Android或iOS设备(如果有的话)
./long_process && pushover.pl "All done"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句