Existe-t-il une commande pour envoyer des messages via le shell Linux à d'autres personnes sur le même réseau? J'utilise write user
puis écrivez le message lui-même. Mais il y a une commande qui n'affiche pas mon nom d'utilisateur ou que j'essaie de leur envoyer un message
La commande que j'utilise le montrera à l'utilisateur que j'essaie de contacter (code extrait du Web):
Message from [email protected] on pts/1 at 17:11 ...
La seule façon simple que je connaisse de le faire est d'utiliser la commande wall
. Cela peut être utilisé pour omettre l'identification de l'expéditeur, via le -n
commutateur.
$ Sudo wall -n hi
Remote broadcast message (Fri Nov 8 13:49:18 2013):
hi
Cette méthode alternative est plus un hack, car elle ne se fait pas via un outil explicite, mais vous pouvez faire écho du texte vers le terminal d'un utilisateur en supposant que vous savez sur lequel il se trouve.
$ 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
En supposant que vous savez que l'utilisateur saml
se trouve en fait sur l'un des pseudo-terminaux, vous pouvez faire écho directement au texte de ce périphérique. Depuis le terminal pts/1
:
$ Sudo echo "Let's go have lunch... ok?" > /dev/pts/4
$
Résultat sur pts/4
:
$ man rsync
$ Let's go have lunch... ok?
Vous pouvez utiliser cette fonction :).
Copiez ce code dans un fichier portant le nom SendMessage.sh
#!/bin/bash
SendMessage()
{
com=`tty`
set `who am i`
who | grep -v "$1" >filef.txt
exec < filef.txt
array=""
while read line
do
set $line
echo $1
array+=($1)
done
rm filef.txt
exec <$com
echo "====================> Select User Number <===================="
echo
select userName in ${array[@]}
do
UserNam=$userName
if [ -n $UserNam ]; then
break
fi
done
unset array #Clear the Array
echo
echo
echo "===================================> Message Body <==================================="
mesg y
read -p "put here your Message==> " messagel
echo $messagel | write $UserNam
if [ $? -eq 0 ]; then
echo "It has been sent successfully.............ok"
#return 0
else
echo "Message Failed to send ..............No!!"
echo "Maybe It is not available for you To send Message To hem "
return 1
fi
}
SendMessage
Comment utiliser:
Allez dans Terminal et saisissez:
chmod +x SendMessage.sh
./SendMessage.sh
Et vous pouvez envoyer un message.