Como enviar um prompt para uma máquina remota como "você tem e-mail", ou seja, não está usando a parede

2

No momento, estou usando o mural para exibir uma mensagem em uma máquina remota quando uma atividade é iniciada e concluída. Mas isso é intrusivo, já que ele vai escrever em um editor que eles possam ter aberto, etc.

O que eu gosto é do "você tem mensagem de correio não lida" que aparece na próxima linha se o usuário pressionar o retorno no terminal.

O que é isso e como posso interagir com ele remotamente?

    
por IanVaughan 19.07.2011 / 15:51

2 respostas

6

Esta linha é impressa pelo shell. Diferentes shells implementam a procura de emails de maneiras um pouco diferentes, mas a menos que possam contar com pessoas para configurar suas shells de acordo com o seu gosto (e possivelmente escolher uma shell diferente), é necessário enviá-las pelo correio.

Boas shells projetadas para uso interativo têm uma maneira de executar comandos arbitrários antes de exibir um prompt, além da notificação de correio incorporada. Você pode ter seus usuários cat um arquivo lá, ou fazer algo mais complicado. Para usuários zsh, coloque isso em ~/.zshrc :

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

Para usuários bash, coloque isso em ~/.bashrc :

PROMPT_COMMAND='
  if [[ /etc/sysadmin-message -nt ~/.sysadmin-message-timestamp ]]; then
    cat /etc/sysadmin-message
    touch ~/.sysadmin-message-timestamp
  fi
'
    
por 19.07.2011 / 15:58
2

Wall escreverá em programas abertos, mas a maioria dos editores tem um comando "redesenhar" de algum tipo para limpar qualquer coisa que tenha sido gravada na tela além do editor. O texto não quebra realmente o conteúdo do editor.

Para fazer o que você quer, você terá que ser criativo com a função precmd() dos seus usuários. Você terá que escrever algum tipo de fila de notificação e ter a configuração de shell do usuário configurada para fazer o check-in com essa fila antes de cada comando. Isso envolve um pouco de sobrecarga, portanto, tenha cuidado ao escrever esse bit.

    
por 19.07.2011 / 16:08