如何向远程计算机发送提示,例如“您有邮件”,即不使用wall

如何向远程计算机发送提示,例如“您有邮件”,即不使用wall

我目前正在使用 wall 在活动开始和完成时在远程计算机上显示消息。但这是侵入性的,因为它将跨他们可能打开的编辑器等进行写入。

我喜欢的是如果用户在终端上按回车键,则“您有未读邮件消息”会显示在下一行。

这是什么?我如何远程与其交互?

答案1

该行是由 shell 打印的。不同的 shell 以稍微不同的方式实现查找邮件,但除非可以指望人们根据您的喜好配置他们的 shell(并且可能选择不同的 shell),否则您需要向他们发送邮件。

除了内置的邮件通知之外,专为交互式使用而设计的优秀 shell 还可以在显示提示之前运行任意命令。您可以为您的用户提供cat一个文件,或者做一些更复杂的事情。对于 zsh 用户,请将其放入~/.zshrc

precmd () {
  if [[ /etc/sysadmin-message -nt ~/.sysadmin-message-timestamp ]]; then
    cat /etc/sysadmin-message
    touch ~/.sysadmin-message-timestamp
  fi
}

对于 bash 用户,请将其放入~/.bashrc

PROMPT_COMMAND='
  if [[ /etc/sysadmin-message -nt ~/.sysadmin-message-timestamp ]]; then
    cat /etc/sysadmin-message
    touch ~/.sysadmin-message-timestamp
  fi
'

答案2

Wall将跨打开的程序进行写入,但大多数编辑器都有某种“重绘”命令来清理除编辑器之外写入屏幕的任何内容。该文本实际上并没有破坏编辑器的内容。

为了做你想做的事,你必须对precmd()用户 shell 的功能发挥创意。您必须编写某种通知队列,并将用户 shell 配置设置为在每个命令之前检查该队列。这涉及一些开销,因此要小心如何编写该位。

相关内容