2016-04-07 4 views
0

のグループにメッセージを送る:私は、現在のユーザー名でログインしているユーザーにメッセージを送信する方法を見つけたのLinux

who | grep username | cut -c1-20 | while read line; do printf "Message Text" | write $line ; done 

しかし、とにかく私は現在、グループでログインしているユーザーにメッセージを送信することができますがありますか?

ありがとうございました。

+0

コマンド 'groups $ line'は、ユーザが所属するグループのリストを返します。必要なグループがリストにあるかどうかを確認できます。 – Barmar

答えて

1

に属するユーザにリストを削減します...彼らはにログインしているすべてのTTY上で、特定のグループにログインしているユーザーごとにメッセージを送信します。 ..

#!/bin/sh 

usage() { 
    cat <<-EOT 
     Usage: writegroup groupname [message] 

     where [message] will be taken from stdin if not provided on the command line. 
EOT 
} 

if [ $# -eq 0 ]; then 
    usage 
    exit 1 
fi 

groupname="$1" 
shift 
message="$*" 

if [ -z "$message" ]; then 
    read message 
fi 

who | while read user tty junk; do 
    if groups "$user" | grep -wq "$groupname"; then 
    echo "$message" | write "$user" "$tty" 
    fi 
done 
1

はあなたが興味を持っているグループに変数groupを設定提供、あなたはこの試みることができます。

for i in $(who -u | cut -d " " -f1 | sort | uniq); do if echo $(groups $i | cut -d " " -f3-) | grep $group >/dev/null; then echo "Message Text" | write $i; fi; done 

$(who -u | cut -d " " -f1 | sort | uniq)がログインしているユーザーのリストを与えるを

$(groups $i | cut -d " " -f3-)すべてのグループにユーザーを与えます属する。

grep文はそう$group

+0

/etc/groupでは、内容はgroup:x:111のようになります。 etc/group-の内容は、username:x:111のようなものです。 group.usernameが見つからないため、スクリプトを使用してメッセージが送信されませんでした。助けてください。 –

+0

私のubuntuでは '/ etc/group'は' sudo:x:27:user1、user2'の形式です。それはあなたのシステムで同じですか?そうでない場合、そのファイルのユーザーを少なくとも2人含むサンプル行を入力してください。 – oliv

+1

さらに、 'groups'コマンドは、OSとOSが異なるシステムファイルや、ディストリビューションからディストリビューションまでのシステムファイルを解析するよりも優れています。 – ghoti