URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 86479
[ Назад ]

Исходное сообщение
"adduser"

Отправлено traffshow , 04-Сен-09 13:47 
Hi!

Подскажите пожалуйста, каким образом можно выполнить следующую задачу:

Необходимо реализовать добавление имен пользователей в отдельный файл, после добавления их в систему с помощью adduser.

Заранее благодарен.


Содержание

Сообщения в этом обсуждении
"adduser"
Отправлено nazimka , 04-Сен-09 13:51 
>Hi!
>
>Подскажите пожалуйста, каким образом можно выполнить следующую задачу:
>
>Необходимо реализовать добавление имен пользователей в отдельный файл, после добавления их в
>систему с помощью adduser.
>
>Заранее благодарен.

а чем /etc/passwd  не устраивает?


"adduser"
Отправлено renton , 04-Сен-09 14:19 
>>Hi!
>>
>>Подскажите пожалуйста, каким образом можно выполнить следующую задачу:
>>
>>Необходимо реализовать добавление имен пользователей в отдельный файл, после добавления их в
>>систему с помощью adduser.
>>
>>Заранее благодарен.
>
>а чем /etc/passwd  не устраивает?

adduser ... USERNAME && echo USERNAME >> /patch_to_file_userlist


"adduser"
Отправлено traffshow , 04-Сен-09 19:27 

>adduser ... USERNAME && echo USERNAME >> /patch_to_file_userlist

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

Тут нужны знатоки перла.
Есть такие?


"adduser"
Отправлено Slavaz , 07-Сен-09 10:48 
>>adduser ... USERNAME && echo USERNAME >> /patch_to_file_userlist
>
>Этот вариант не совсем подходит, тк нужно добавлять вручную имя для каждого
>отдельного юзера.
>Нужно чтобы оно автоматически после создания добавлялось в файл.
>
>Тут нужны знатоки перла.
>Есть такие?

Зачем здесь перл?

cat >/usr/local/sbin/myadduser <<EOF
#!/bin/sh
$(which addurser) $@ \
  && cut -d ':' -f1 /etc/passwd >/path/to/own_users.list
EOF

Дальше есть целых два варианта:
1) через alias переназначить adduser на свой скрипт:
alias adduser='/usr/local/sbin/myadduser'
Куда прописать -  решаете сами (в ~/.bash_profile рута или в /etc/profile.d/... )

2) просто переименовать оригинальный adduser и вместо него подставить свой:
mv /usr/sbin/adduser{,.orig}
mv /usr/local/sbin/myadduser /usr/sbin/adduser
# меняем в своём файле вызов adduser на adduser.orig
sed -i 's/\(adduser\)/\1.orig/' /usr/sbin/adduser


Я делал бы по первому варианту с алиасами. Потому что после очередного yum update / apt-get update / emerge / etc собственный враппер-скрипт будет заменён.


"adduser"
Отправлено traffshow , 07-Сен-09 17:40 
в результате - последний файл пустой, в который идет перенаправление вывода.
можно подробные комментарии к скрипту, если не сложно?


>cat >/usr/local/sbin/myadduser <<EOF
>#!/bin/sh
>$(which addurser) $@ \
>  && cut -d ':' -f1 /etc/passwd >/path/to/own_users.list
>EOF
>


"adduser"
Отправлено Slavaz , 07-Сен-09 18:04 
>в результате - последний файл пустой, в который идет перенаправление вывода.
>можно подробные комментарии к скрипту, если не сложно?
>>#!/bin/sh

# выполнить команду adduser с передачей ей всех параметров своей комстроки
>>$(which addurser) $@ \

# если успешно, то читать файл /etc/passwd как таблицу;
# разделитель полей - двоеточие;
# отобразить только первое поле;
# вывод перенаправить в файл /path/to/own_users.list
>>  && cut -d ':' -f1 /etc/passwd >/path/to/own_users.list


"adduser"
Отправлено traffshow , 07-Сен-09 18:07 
Ок, а если не успешно? Получается пустой файл?
тк ни ошибки, ни результата нэт(

FreeBSD 4.11


>[оверквотинг удален]
>>>#!/bin/sh
>
># выполнить команду adduser с передачей ей всех параметров своей комстроки
>>>$(which addurser) $@ \
>
># если успешно, то читать файл /etc/passwd как таблицу;
># разделитель полей - двоеточие;
># отобразить только первое поле;
># вывод перенаправить в файл /path/to/own_users.list
>>>  && cut -d ':' -f1 /etc/passwd >/path/to/own_users.list


"adduser"
Отправлено Slavaz , 07-Сен-09 18:44 
Опс.. верно. поправочка:


&& { cut -d ':' -f1 /etc/passwd >/path/to/own_users.list }


"adduser"
Отправлено traffshow , 07-Сен-09 19:05 
... может лыжи не едут у меня конечно... :(

но результат тот же.


>Опс.. верно. поправочка:
>
>
> && { cut -d ':' -f1 /etc/passwd >/path/to/own_users.list }


"adduser"
Отправлено Slavaz , 07-Сен-09 21:53 
>> && { cut -d ':' -f1 /etc/passwd >/path/to/own_users.list }
>но результат тот же.

Извините, не увидел сразу FreeBSD-4.x

Гм. Попробуйте тогда так:

&& { awk -F ':' '{print $1}' /etc/passwd >/path/to/own_users.list }

я теперь уже не уверен, что сработает, ибо с фряхой дела не имел.


"adduser"
Отправлено traffshow , 04-Сен-09 18:59 

>
>а чем /etc/passwd  не устраивает?

Нужно, чтобы после выполнения adduser, имя успешно заведенного пользователя автоматически вносилось в отдельный файл, который в свою очередь будет читать другая программа.


"adduser"
Отправлено shadow_alone , 04-Сен-09 21:33 
поставьте крон на сравнение /etc/passwd
отдельный файл для крона, с которым сравнивать.
если есть разница, он ее пишет куда угодно, если нет, молчит в тряпочку.