Есть ли команда для отправки сообщений через оболочку Linux другим людям в той же сети? Я использую, write userа затем написать само сообщение. Но есть какая-то команда, которая не показывает мое имя пользователя или что я пытаюсь отправить им сообщение
Команда, которую я использую, покажет это пользователю, с которым я пытаюсь связаться (код взят из Интернета):
Message from root@dev.example.com on pts/1 at 17:11 ...
Единственный простой способ сделать это - использовать wallкоманду. Это может быть использовано для пропуска идентификации отправителя через -nкоммутатор.
пример
$ sudo wall -n hi
Remote broadcast message (Fri Nov 8 13:49:18 2013):
hi
используя эхо
Этот альтернативный метод более хакерский, так как он не выполняется с помощью явного инструмента, но вы можете выводить текст на терминал пользователя, предполагая, что вы знаете, на каком из них он работает.
пример
$ 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
Предполагая, что вы знаете, что пользователь samlна самом деле находится на одном из псевдотерминалов, вы можете напрямую выводить текст на это устройство. С терминала pts/1:
$ sudo echo "Let's go have lunch... ok?" > /dev/pts/4
$
Но «стена» отправляет сообщение всем пользователям, вошедшим в систему, верно?
Рикардо Алмейда
2
@ Exsound - правильно. Нет способа отправить сообщение без вашей идентификации любым другим способом, который я видел.
SLM
1
В моей системе syslog настроен на отправку сообщений с уровнем emerg через стену, поэтому logger -p emerg hiработает так же, как 1-й метод выше (за исключением того, что syslogd отображается как отправитель), но не требует sudo.
Майкл Суэльманн
1
@Exsound - вы также можете эхо прямо на терминал, смотрите обновление.
SLM
@ Exsound - милости просим, спасибо за вопрос.
slm
9
Вы можете использовать эту функцию :).
Скопируйте этот код в файл с именемSendMessage.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
работает так же, как 1-й метод выше (за исключением того, что syslogd отображается как отправитель), но не требует sudo.Вы можете использовать эту функцию :).
Скопируйте этот код в файл с именем
SendMessage.sh
Как использовать:
перейдите в терминал и введите:
И вы можете отправить сообщение.
источник