nixp.ru v3.0

20 октября 2017,
пятница,
06:29:13 MSK

DevOps с компанией «Флант»
bezpal написал 23 мая 2005 года в 09:05 (333 просмотра) Ведет себя как мужчина; открыл 9 тем в форуме, оставил 9 комментариев на сайте.

Здравствуйте уважаемые…

Такой вот вопрос:

Необходимо юзерам заданной группы отправлять письмо одного содержания, а юзерам всех остальных групп письмо другого содержания… Группа задается в качестве параметра… Подскажите пожалуйста как это можно реализовать…

Огромное спасибо…

Uncle Theodore

Слушай, чиста из любопытства, а зачем тебе все это надо? Ты так сурово изучаешь shell? Вроде уже семестр должен закончится… Задачки из тебя так и сыпятся…

Ну, можно, например, взять файл /etc/group и пропарсить его. Основная проблема тут — послать письма только настоящим пользователям, а не апачу какому-нибудь, да? Это уже несколько сложнее, придется, наверное еще и uid пользователя проверять (обычно uid настоящих пользователей, а не системных аккаунтов больше 99).

Все-таки, зачем это тебе?

Good Luck,

UT

bezpal

Семестр то кончился, но у меня есть книжка с кучей задач, вот я хочу большинство сделать, попрактиковаться…

bezpal

Нет, ну допустим, что в какой либо группе содержатся только юзеры и все… И вот им всем надо отправить письмо, причем имя название группы задано ну или gid…

Genie

см. структуру /etc/passwd и /etc/groups.

в первом указывается первичная группа (основная) для пользователя.

во втором — все дополнительные, альтернативные

вот и разбирай эти два файла, получай имена пользователй, которые будут в этой группе.

можно использовать комбинацию просмотра файла /etc/passwd и для каждого вхождения с uid>99 проверять командой id или groups принадлежность к заданной группе.

после этого передавать построенный список пользователей команде mail. которая умеет вопринимать список пользователей для отправки сообщеиня.

Uncle Theodore

Погодь, Genie, у меня на Слаке файл /etc/group (не /etc/groups) содержит список групп в формате group_name:passwd:GID:user_list (описание — из man group), где user_list — это просто список всех пользователей через запятую. Разве это не стандартная фича? Если стандартная, то надо просто выбрать нужную строку и последнее поле от нее откусить — вот тебе и список пользователей данной группы.

Good Luck,

UT

Впрочем да, основной группы там нету… Но все равно, он /etc/group или /etc/groups?

Genie

сам знаешь, что правильно — group :)) без s на конце.

просто я сегодня что-то мало на экран, не говоря уже про клавиатуру, глядю при наборе.. ;)

вот тебе и список пользователей данной группы.

ну вот сам же и поправился — «Впрочем да, основной группы там нету…»

поэтому будет несколько удобнее просто просматривать /etc/passwd, разбирать оный на два интересных нам поля (user_name и uid), проверять uid на принадлежность к пользовательскому (кстати, тут сильно зависит от дистрибутива и версии: в дебиане, к примеру, до какого-то момента было от 100, потом сменили на от 1000), вхождение user_name в заданную группу (если задан gid — получить имя группы) по команде id или groups (вот тут уже точно с «s» на конце), и собирать оные в «comma-separated list of users» ;) для передаче mail.

впрочем, чего это я почти дословно рассказываю содержание нужного скрипта.. ;)