メッセージを送ることができるwallというコマンドがあります。
$ wall <メッセージ>とかするとメッセージが伝わります。引数なしの
$ wallだと続けて複数行のメッセージを入れ、
その後[Ctrl]+[D]キーを押せばまるごと伝わりますし、
標準入力が使えるので、
$ wall < readme.txt $ ls -l | wallのような使い方も可能です。
リモートログインしてる側からもwallは使えるので、
オープンでかつ他人への迷惑を顧みない
テキストチャットとして使えなくもないのですが、
ローカルで開いているターミナルには送られないため
片通話状態になる欠点があります。
まあ想定される用途は管理者が何かする時に
予め皆に通知しておく程度のことなのでやむを得ません。
ということで私もあることは知っていますが、
有用に使ったことはないコマンドだったりします。
ところがwallそのものではないのですが同様のスタイルで
個別にメッセージが送れ、返事ももらえる方法を知った、
というか編み出しました。方法は以下の通りです。
まず、"who"コマンドを実行して
$ who <アカウント名> :0 <ログイン日時> (:0) <アカウント名> pts/<番号> <ログイン日時> (<ログイン元IPアドレス>)結果のアカウント名とログイン元IPアドレスから相手を特定し、
$ echo '<メッセージ>' > /dev/pts/<番号>を実行して相手にメッセージを送ります。同時に
$ tty > /dev/pts/<番号>で相手に対して返信先を知らせます。
なんならメッセージを送る際に
$ echo `tty`:'<メッセージ>' > /dev/pts/<番号>として、よくあるチャットソフト的な表示にしてもいいでしょう。
なお相手には
/dev/pts/<送り元番号>:<メッセージ>のメッセージが送られているので、その相手は
$ echo '<メッセージ>' > /dev/pts/<送り元番号>で返事ができます。
シェル内でのテキストチャットが実現できます。
ただしちょっと問題が。
リモートログインユーザからローカルターミナルへ
会話を開始する際、宛先がわかりません。
なぜって"who"コマンドでptsデバイス番号が表示されないから。
そんな時は"who"と"ls -l /dev/pts/*"の実行結果から
推理するぐらいでしょうか。
間違った相手にまずいメッセージを
送らないよう注意が必要ですが。
0 件のコメント:
コメントを投稿