2016-04-07 7 views
0

ich den Weg gefunden Nachricht sendet zur Zeit in Benutzern von Benutzername angemeldet:Nachricht an Gruppe in Linux

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

Allerdings ist es trotzdem kann ich Nachricht senden zur Zeit in Benutzern von Gruppe angemeldet?

Danke für Ihre Hilfe.

+0

Der Befehl 'groups $ line' gibt die Liste der Gruppen zurück, zu denen der Benutzer gehört. Sie können überprüfen, ob die gewünschte Gruppe in der Liste enthalten ist. – Barmar

Antwort

1

gehör Benutzer reduzieren ... Um eine Nachricht an alle in Benutzer in einer bestimmten Gruppe angemeldet zu senden, an jedem tty sie eingeloggt sind. ..

#!/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

Sofern Sie die Variable group der Gruppe festgelegt Sie interessiert sind, können Sie dies versuchen.

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) die Liste der Benutzer in

gibt

$(groups $i | cut -d " " -f3-) angemeldet gibt einem Benutzer alle Gruppen gehört.

Die grep Anweisung wird die Liste der zu den so $group

+0

In/etc/group ist der Inhalt wie Gruppe: x: 111. und in etc/group- ist der Inhalt wie Benutzername: x: 111. Kann group.username nicht finden, daher wurde keine Nachricht mit Ihrem Skript gesendet. Bitte helfen Sie. –

+0

Auf meinem ubuntu hat die '/ etc/group' das Format' sudo: x: 27: user1, user2'. Ist es auf Ihrem System dasselbe? Wenn nicht, geben Sie eine Beispielzeile mit mindestens 2 Benutzern dieser Datei an. – oliv

+1

Verwenden Sie den Befehl 'groups' auch am besten, um Systemdateien zu analysieren, die sich von Betriebssystem zu Betriebssystem oder sogar von Distribution zu Distribution unterscheiden können. – ghoti

Verwandte Themen