wall não é transmitido para os terminais GUI em 16.04

9

O título resume tudo. A execução de wall <<< "TEST" mostra a mensagem em qualquer TTY, mas não em nenhum terminal GUI (testado com gnome-terminal e sakura ).

Eu tenho vários scripts de monitoramento de temperatura e bateria que dependem de wall ing de uma mensagem e após a atualização recente para o 16.04, notei que eles pararam de trabalhar na GUI.

Não consigo determinar se isso é um bug ou se algo está impedindo que as mensagens sejam exibidas na GUI.

Como devo proceder?

Informações adicionais:

A execução de byobu em um terminal gui permite ver mensagens na parede

    
por Sergiy Kolodyazhnyy 21.06.2016 / 01:21

2 respostas

3

Devido à forma como o gnome-terminal funciona, wall não o registra como um terminal. Uma explicação mais detalhada pode ser encontrada aqui . Eu assumo que o mesmo é verdade para sakura.

Com base na resposta de Stancu Mihai , criei um script que imite a maneira como o wall normalmente funciona, incluindo o banner com nome de usuário e registro de data e hora (use -n ou --nobanner para remover o banner). Atualmente, o script não suporta a leitura da mensagem de um arquivo.

Você pode substituir o comando normal wall por este adicionando um alias em ~/.bashrc :

echo 'alias wall="~/your/path/to/wall.sh"' >> ~/.bashrc

Exemplo de uso:

$ wall "some message"

Broadcast message from username@hostname (pts/19) (Wed Mar 29 11:07:35 2017):

some message

$ wall -h

Usage:
 wall [options] [message]

Write a message to all users.

Options:
 -n, --nobanner          do not print banner
 -h, --help              display this help and exit
    
por danmou 29.03.2017 / 11:25
0

Sim, é verdade que o gnome-terminal não atualiza os registros de login, pt por isso eu tento descobrir outra solução:

  1. Vamos descobrir todos os pseudo terminais ativos
ps -ef | grep " pts/" | awk '{print }' | sort -u | tee terminals4message.txt

Isso ajuda você a listar todas as sessões de terminal de desktop.

Outra maneira de enviar uma mensagem para sessões de terminal de área de trabalho ativas

echo "$MESSAGE_to_send" | sudo tee /dev/pts/$terminal_number
  1. Não se esqueça das sessões tty
ps -ef | grep " tty" | awk '{print }' | sort -u | grep -v "pts" | tee terminals4message.txt

Isso ajuda você a listar todas as sessões de pty

  1. Enviando a mensagem para todos
cat terminals4message.txt | while read TTY_TO; do echo -e "SYSTEM MESAGE: $(date) - \n MESAJ" | sudo tee /dev/$TTY_TO 1>/dev/null
  1. Agora vamos juntar tudo Você pode criar um bom script para substituir seu aplicativo de parede atual e integrar todas as coisas acima. Depois disso, você pode adicionar ao seu ~ / .bashrc %código% Desta forma, você não precisa excluir a parede atual

Desculpe se algo não está certo, pois alguém não me deixou focar neste assunto ... se vocês perceberem algo estranho, por favor, deixem um comentário.

10x

    
por Stancu Mihai 19.01.2017 / 18:16

Tags