Hi!Подскажите пожалуйста, каким образом можно выполнить следующую задачу:
Необходимо реализовать добавление имен пользователей в отдельный файл, после добавления их в систему с помощью adduser.
Заранее благодарен.
>Hi!
>
>Подскажите пожалуйста, каким образом можно выполнить следующую задачу:
>
>Необходимо реализовать добавление имен пользователей в отдельный файл, после добавления их в
>систему с помощью adduser.
>
>Заранее благодарен.а чем /etc/passwd не устраивает?
>>Hi!
>>
>>Подскажите пожалуйста, каким образом можно выполнить следующую задачу:
>>
>>Необходимо реализовать добавление имен пользователей в отдельный файл, после добавления их в
>>систему с помощью adduser.
>>
>>Заранее благодарен.
>
>а чем /etc/passwd не устраивает?adduser ... USERNAME && echo USERNAME >> /patch_to_file_userlist
>adduser ... USERNAME && echo USERNAME >> /patch_to_file_userlistЭтот вариант не совсем подходит, тк нужно добавлять вручную имя для каждого отдельного юзера.
Нужно чтобы оно автоматически после создания добавлялось в файл.Тут нужны знатоки перла.
Есть такие?
>>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 собственный враппер-скрипт будет заменён.
в результате - последний файл пустой, в который идет перенаправление вывода.
можно подробные комментарии к скрипту, если не сложно?
>cat >/usr/local/sbin/myadduser <<EOF
>#!/bin/sh
>$(which addurser) $@ \
> && cut -d ':' -f1 /etc/passwd >/path/to/own_users.list
>EOF
>
>в результате - последний файл пустой, в который идет перенаправление вывода.
>можно подробные комментарии к скрипту, если не сложно?
>>#!/bin/sh# выполнить команду adduser с передачей ей всех параметров своей комстроки
>>$(which addurser) $@ \# если успешно, то читать файл /etc/passwd как таблицу;
# разделитель полей - двоеточие;
# отобразить только первое поле;
# вывод перенаправить в файл /path/to/own_users.list
>> && cut -d ':' -f1 /etc/passwd >/path/to/own_users.list
Ок, а если не успешно? Получается пустой файл?
тк ни ошибки, ни результата нэт(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
Опс.. верно. поправочка:
&& { cut -d ':' -f1 /etc/passwd >/path/to/own_users.list }
... может лыжи не едут у меня конечно... :(но результат тот же.
>Опс.. верно. поправочка:
>
>
> && { cut -d ':' -f1 /etc/passwd >/path/to/own_users.list }
>> && { cut -d ':' -f1 /etc/passwd >/path/to/own_users.list }
>но результат тот же.Извините, не увидел сразу FreeBSD-4.x
Гм. Попробуйте тогда так:
&& { awk -F ':' '{print $1}' /etc/passwd >/path/to/own_users.list }
я теперь уже не уверен, что сработает, ибо с фряхой дела не имел.
>
>а чем /etc/passwd не устраивает?Нужно, чтобы после выполнения adduser, имя успешно заведенного пользователя автоматически вносилось в отдельный файл, который в свою очередь будет читать другая программа.
поставьте крон на сравнение /etc/passwd
отдельный файл для крона, с которым сравнивать.
если есть разница, он ее пишет куда угодно, если нет, молчит в тряпочку.