在Linux中向组发送消息

时间:2016-04-07 08:35:53

标签: linux shell

我找到了通过用户名发送消息给当前登录用户的方法:

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

但是,无论如何我可以按组向当前登录的用户发送消息吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分: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

的用户

答案 1 :(得分:1)

所以......要向特定群组中的每个登录用户发送消息,在他们登录的每个tty上...

public static string CreateNotificationMailMessage(NotificationMailMessage mailMessageObject)
{
    var table = new HtmlTable();
    var mailMessage = new StringBuilder();
    string html;

    if (mailMessageObject.InvalidCompanies.Any())
    {
        HtmlTableRow row;
        HtmlTableCell cell;

        foreach (var invalidCompany in mailMessageObject.InvalidCompanies)
        {
            row = new HtmlTableRow();
            cell = new HtmlTableCell();
            cell.InnerText = invalidCompany.BusinessName;
            row.Cells.Add(cell);
            cell.InnerText = invalidCompany.SwiftBIC;
            row.Cells.Add(cell);
            cell.InnerText = invalidCompany.IBAN;
            row.Cells.Add(cell);
            table.Rows.Add(row);
        }
    }
    using (var sw = new StringWriter())
    {
        table.RenderControl(new HtmlTextWriter(sw));
        html = sw.ToString();
    }

    mailMessage.AppendFormat(html);
    return mailMessage.ToString();
}