bezpal
написал 23 мая 2005 года в 09:05 (751 просмотр)
Ведет себя
как мужчина; открыл 9 тем в форуме, оставил 9 комментариев на сайте.
Здравствуйте уважаемые…
Такой вот вопрос:
Необходимо юзерам заданной группы отправлять письмо одного содержания, а юзерам всех остальных групп письмо другого содержания… Группа задается в качестве параметра… Подскажите пожалуйста как это можно реализовать…
Огромное спасибо…
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Слушай, чиста из любопытства, а зачем тебе все это надо? Ты так сурово изучаешь shell? Вроде уже семестр должен закончится… Задачки из тебя так и сыпятся…
Ну, можно, например, взять файл /etc/group и пропарсить его. Основная проблема тут — послать письма только настоящим пользователям, а не апачу какому-нибудь, да? Это уже несколько сложнее, придется, наверное еще и uid пользователя проверять (обычно uid настоящих пользователей, а не системных аккаунтов больше 99).
Все-таки, зачем это тебе?
Good Luck,
UT
Семестр то кончился, но у меня есть книжка с кучей задач, вот я хочу большинство сделать, попрактиковаться…
Нет, ну допустим, что в какой либо группе содержатся только юзеры и все… И вот им всем надо отправить письмо, причем имя название группы задано ну или gid…
см. структуру /etc/passwd и /etc/groups.
в первом указывается первичная группа (основная) для пользователя.
во втором — все дополнительные, альтернативные
вот и разбирай эти два файла, получай имена пользователй, которые будут в этой группе.
можно использовать комбинацию просмотра файла /etc/passwd и для каждого вхождения с uid>99 проверять командой id или groups принадлежность к заданной группе.
после этого передавать построенный список пользователей команде mail. которая умеет вопринимать список пользователей для отправки сообщеиня.
Погодь, Genie, у меня на Слаке файл /etc/group (не /etc/groups) содержит список групп в формате group_name:passwd:GID:user_list (описание — из man group), где user_list — это просто список всех пользователей через запятую. Разве это не стандартная фича? Если стандартная, то надо просто выбрать нужную строку и последнее поле от нее откусить — вот тебе и список пользователей данной группы.
Good Luck,
UT
Впрочем да, основной группы там нету… Но все равно, он /etc/group или /etc/groups?
сам знаешь, что правильно — group :)) без s на конце.
просто я сегодня что-то мало на экран, не говоря уже про клавиатуру, глядю при наборе.. ;)
ну вот сам же и поправился — «Впрочем да, основной группы там нету…»
поэтому будет несколько удобнее просто просматривать /etc/passwd, разбирать оный на два интересных нам поля (user_name и uid), проверять uid на принадлежность к пользовательскому (кстати, тут сильно зависит от дистрибутива и версии: в дебиане, к примеру, до какого-то момента было от 100, потом сменили на от 1000), вхождение user_name в заданную группу (если задан gid — получить имя группы) по команде id или groups (вот тут уже точно с «s» на конце), и собирать оные в «comma-separated list of users» ;) для передаче mail.
впрочем, чего это я почти дословно рассказываю содержание нужного скрипта.. ;)