我正在运行一些东西,同时通过 ssh 进入机器(通过 mosh)。我将使用 sendmail 来获取程序终止的通知,但出于安全原因,该计算机无法连接到网络。
程序终止后,有什么方法可以在本地计算机上收到通知吗?
编辑:具体来说,一旦我登录到删除计算机,我希望在保持同一 ssh 会话的同时在本地计算机上收到某种通知。
答案1
在脚本结束时本地通知有多种解决方案,这里有两种:
在末尾使用 beep 字符,发出可听见的声音:
ssh user@host /path/to/script; echo -e '\a' > $(tty)
您可以弹出 CD 驱动器(我最喜欢的;无论您做什么,您都会被注意到:-)。另外,如果您离开并回来或锁定机器,您也会看到它。)
ssh user@host /path/to/script; eject
答案2
您不需要从国外机器发送邮件。本地计算机可以在命令完成时发送电子邮件:
ssh host cmd ; echo "It's done." | mail me@somewhere -s Completion
如果您必须在远程计算机上保持登录状态,您仍然可以监视其命令的进度。举个例子:
$ ssh host 'cmd1 ; echo Done $?; cmd2' | { while read a b; do [ "$a" = "Done" ] && echo "It's done with code $b." | mail me@somewhere -s Completion; done; }
在上面,cmd1 ; echo Done $?; cmd2
是在远程计算机上运行的。通过循环,本地计算机会监视进度并在完成while
时向您发送电子邮件。cmd1