Czy istnieje polecenie wysyłania wiadomości za pośrednictwem powłoki Linux do innych osób w tej samej sieci? Używam, write usera następnie piszę samą wiadomość. Ale jest jakieś polecenie, które nie pokazuje mojej nazwy użytkownika lub próbuję je wysłać
Polecenie, którego używam, pokaże to użytkownikowi, z którym próbuję się skontaktować (kod pobrany z sieci):
Jedynym prostym sposobem, jaki wiem o tym, jest użycie wallpolecenia. Można to wykorzystać do pominięcia identyfikacji nadawcy za pomocą -nprzełącznika.
Przykład
$ sudo wall -n hi
Remote broadcast message (Fri Nov 8 13:49:18 2013):
hi
za pomocą echa
Ta alternatywna metoda jest bardziej włamaniem, ponieważ nie odbywa się to za pomocą jawnego narzędzia, ale możesz wysłać tekst do terminala użytkownika, zakładając, że wiesz, na którym on jest.
Przykład
$ w
13:54:26 up 2 days, 36 min, 4 users, load average: 4.09, 4.20, 3.73
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
saml tty1 :0 Wed13 2days 3:55m 0.04s pam: gdm-password
saml pts/0 :0.0 Wed13 24:16m 0.35s 0.35s bash
saml pts/1 :0.0 Wed20 0.00s 3.71s 0.00s w
saml pts/4 :0.0 01:20 12:33m 0.36s 0.05s man rsync
Zakładając, że wiesz, że użytkownik samljest w rzeczywistości na jednym z pseudo terminali, możesz echo tekstu na tym urządzeniu bezpośrednio tak. Z terminala pts/1:
$ sudo echo "Let's go have lunch... ok?" > /dev/pts/4
$
Ale „ściana” wysyła wiadomość do wszystkich zalogowanych użytkowników, prawda?
Ricardo Almeida,
2
@Exsound - poprawnie. Nie ma sposobu na wysłanie wiadomości bez Twojej identyfikacji inną metodą, jaką widziałem.
slm
1
W moim systemie syslog jest skonfigurowany do wysyłania wiadomości z poziomem emerg przez ścianę, więc logger -p emerg hidziała tak samo jak pierwsza metoda powyżej (z wyjątkiem tego, że syslogd jest wyświetlany jako nadawca), ale nie potrzebuje sudo.
Michael Suelmann,
1
@Exsound - możesz także wysłać echo bezpośrednio do terminala, zobacz aktualizację.
slm
@Exsound - nie ma za co, dziękuję za Q.
slm
9
Możesz użyć tej funkcji :).
Skopiuj ten kod do pliku o nazwieSendMessage.sh
#!/bin/bashSendMessage(){
com=`tty`set`who am i`
who | grep -v "$1">filef.txt
exec < filef.txt
array=""while read linedoset $line
echo $1
array+=($1)done
rm filef.txt
exec <$com
echo "====================> Select User Number <===================="
echo
select userName in ${array[@]}doUserNam=$userNameif[-n $UserNam ];thenbreakfidone
unset array #Clear the Array
echo
echo
echo "===================================> Message Body <==================================="
mesg y
read -p "put here your Message==> " messagel
echo $messagel | write $UserNamif[ $?-eq 0];then
echo "It has been sent successfully.............ok"#return 0else
echo "Message Failed to send ..............No!!"
echo "Maybe It is not available for you To send Message To hem "return1fi}SendMessage
logger -p emerg hi
działa tak samo jak pierwsza metoda powyżej (z wyjątkiem tego, że syslogd jest wyświetlany jako nadawca), ale nie potrzebuje sudo.Możesz użyć tej funkcji :).
Skopiuj ten kod do pliku o nazwie
SendMessage.sh
Jak używać:
Przejdź do terminala i wpisz:
I możesz wysłać wiadomość.
źródło