wall 16.04'te GUI terminallerine yayın yapmıyor


11

Başlık özetliyor. Çalışıyor wall <<< "TEST"mesajı herhangi bir TTY'de gösterir ancak GUI terminallerinde göstermez ( gnome-terminalve ile test edilir sakura).

wallBir iletiye güvenen birkaç pil ve sıcaklık izleme komut dosyası var ve son 16.04'e yükselttikten sonra GUI'de çalışmayı bıraktıklarını fark ettim.

Bunun bir hata mı yoksa mesajların GUI'de görüntülenmesini engellediğini belirleyemiyorum.

Nasıl ilerlemeliyim ?

İlave bilgi:

byobuBir gui terminalinde çalıştırmak duvar mesajlarını görmeye izin verir


2
Muhtemelen ilgili askubuntu.com/questions/12654/... (içine bakmak xmessage, gxmessageya notify-send)
Nick Weinberg

6
Bunu bugün erken saatlerde okudum. Evet, biraz ilgili, ancak büyük itiraz 1) bu sorunun 10.10'dan ve duvarın 14.04'te çalıştığı 2) benim için tatmin edici olmadığı sürece çözümler. notify-send yalnızca kısa mesajlar için ve yalnızca GUI'de çalışır. walltty AND gui AND için bir komut yazmak yerine tüm terminaller için bir komut kullanmak için iyi bir rahatlığa sahiptir ve diğer DISPLAYs'de olabilecek diğer tüm oturumlar için , bu en azından imho çok iyi bir alternatif değil
Sergiy Kolodyazhnyy

Aynı sorunu son zamanlarda 15.010'da yaşadım. 16.04 Ubuntu Mate'deyim ve burada işlevsel görünüyor. belki de temel bir kütüphanede bir sorun vardır. Belki mesg komutunun ne işe yaradığına bakın? -k 5 tüm sanal terminallerde nasıl çalışır? Yazma düzgün çalışıyor mu? Çalışmadığı başka bir makine bulursam kaynak kodlarına bakacağım. Ben onun bir kullanıcı alanı kütüphane sorunu tahmin ediyorum.
j0h

1
@ j0h aslında, sorun gnome terminalinden kaynaklanıyor. Giriş kayıtlarını güncellemek için kullanılır, bu nedenle daha whoönce gnome terminalinde çalışırsanız , tüm açık sekmelerinizi gösterirdim, ancak artık değil. Wall, yalnızca giriş kayıtlarını güncelleyen terminal oturumlarına mesaj gönderir. Mate varsayılan olarak farklı terminal kullanır. Bunu uzun zaman önce anladım ama aslında bir cevap bile göndermedim. Bunu bu hafta bir noktada yapacağız.
Sergiy Kolodyazhnyy

Bunu nasıl hackleyebileceğiniz hakkında bir fikrim var: <br>
Stancu Mihai

Yanıtlar:


5

GNOME terminalinin çalışma şekli nedeniyle, terminal wallolarak kaydetmez. Daha ayrıntılı bir açıklama burada bulunabilir . Aynı şeyin sakura için de geçerli olduğunu düşünüyorum.

Stancu Mihai'nin cevabına dayanarak, kullanıcı adı ve zaman damgası içeren banner (banner'ı kaldırmak için -n veya --nobanner kullanın) dahil olmak üzere genellikle çalışma şeklini taklit eden bir komut dosyası oluşturdum wall. Komut dosyası, şu anda iletinin bir dosyadan okunmasını desteklemiyor.

wallİçine bir takma ad ekleyerek normal komutu bununla değiştirebilirsiniz ~/.bashrc:

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

Örnek kullanım:

$ 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

İyi iş @danmou!
Stancu Mihai

1

Evet gnome terminali giriş kayıtlarını güncellemediği doğru, bu yüzden başka bir çözüm bulmaya çalışıyorum:

  1. Tüm aktif sözde terminalleri bulalım
ps -ef | grep " pts/" | awk '{print $6}' | sort -u | tee terminals4message.txt

Bu, tüm masaüstü terminal oturumlarını listelemenize yardımcı olur.

Etkin masaüstü terminal oturumlarına mesaj göndermenin başka bir yolu

echo "$MESSAGE_to_send" | sudo tee /dev/pts/$terminal_number
  1. Tty sesions unutma
ps -ef | grep " tty" | awk '{print $6}' | sort -u | grep -v "pts" | tee terminals4message.txt

Bu, tüm oturumları listelemenize yardımcı olur

  1. Mesajı herkese gönderme
cat terminals4message.txt | while read TTY_TO; do echo -e "SYSTEM MESAGE: $(date) - \n MESAJ" | sudo tee /dev/$TTY_TO 1>/dev/null
  1. Şimdi hepsini bir araya getirelim Mevcut duvar uygulamanızı değiştirmek ve yukarıdaki şeyleri entegre etmek için güzel bir komut dosyası oluşturabilirsiniz.
    Bundan sonra ~ / .bashrc'nize ekleyebilirsiniz alias wall="your_wall_replacement.sh" . Bu şekilde mevcut duvarı silmenize gerek yoktur.

Bir şey doğru değilse üzgünüm, biri bu konuya odaklanmama izin vermedi ... eğer garip bir şey fark ederseniz lütfen yorum bırakın.

10x


İşte bunun için bir astar. Ben sadece bir tür teklif vardır böylece awk kesim ile değiştirildi. ps -ef | grep -e " tty" -e " pts/" | tr -s " " | cut -d " " -f 6 | sort -u | while read TTY; do echo "MESSAGE" | tee /dev/$TTY 1>/dev/null; done
CJxD

0

Diğerlerinin birçok yöntem olduğunu ileri sürdüğü gibi, buraya bulduğum daha doğrudan (kolay) bir yöntem koydum (burada echo "$MESSAGE_to_send" | sudo tee /dev/pts/$terminal_number: tartışıldı.)

echo "Your message" > /dev/pts/$terminal-no

Burada terminal-nodiğer terminalden "tty" komutu ile elde edilebilir.

tty

/dev/pts/12

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.