Linux скрипт для извлечения имен пользователей из текстового файла

0

Я новичок в написании сценариев, но я создал текстовый файл с именем, text.datкоторый содержит только имена пользователей в расположении файла, /home/daniel/text.datи я пытаюсь запустить сценарий (вызываемый addusers.sh), который отображает имена из этого текстового файла и создаст новую учетную запись пользователя на система для каждой новой учетной записи пользователя, указанной в text.datфайле.

Для каждой созданной учетной записи пользователя добавьте строчку в /home/daniel/logs/useraccounts.logфайл. Запись строки будет содержать следующую информацию:

добавлено | <имя учетной записи пользователя> | <день и время создания>
, Это то, что я до сих пор:

 #! / Bin / Баш 
echo «cat text.dat» 
newuser = grep /home/daniel/text.dat 
sudo adduser $ newuser
Дэниел Уилсон
источник
Вы добавляете этих пользователей в интерактивном режиме (т.е. отвечаете на запросы информации о пользователе) или не в интерактивном режиме?
Бертиб

Ответы:

0

Как я могу добавить пользователей в систему Linux, как указано в файле?

Что-то вроде следующего должно быть сделано, если вы хотите, чтобы процесс был полностью автоматизирован (например, через sudo ./addusers.sh):

#! / Bin / Баш
# addusers.sh - Добавить пользователей в систему и вывести журнал того же
# запускать с правами root или через sudo

usersfile = / дом / Даниель / text.dat
файл_журнал = / дом / Даниель / журналы / useraccounts.log

пока читал пользователя; делать
   echo "Добавление $ user"
   adduser --gecos "" --disabled-password $ user
   echo "добавлено | $ user |` date` | " >> $ logfile
сделано <$ usersfile

С опциями (с adduserman-страницы):

--disabled-password

Like --disabled-login, but logins are still possible (for example using SSH RSA keys) but not using аутентификация по паролю.

( --disabled-loginбудет работать тоже, я думаю)

--gecos GECOS

Set the gecos field for the new entry generated. adduser will not ask for finger information if this option is given.

Вы можете оставить эти опции adduserвыключенными, если хотите указать пароль и / или информацию о пользователе.

Вы также можете указать, как вы хотите, чтобы день и время создания были указаны с помощью опций date, например,

$ date "+% Y-% m-% d% H% M"
2017-02-19 0330
bertieb
источник
Большое спасибо за ваш ответ, в основном все прошло, но когда я запустил сценарий, он сказал ./addusers.sh: строка 7: /home/daniel/logs/useraccounts.log:Permission отказано в добавлении учетной записи пользователя. Я также добавил sudo перед adduser в сценарии. Вы знаете, почему это будет?
Даниэль Уилсон
@DanielWilson звучит так, как будто линия раньше done < $usersfileвызывала проблему; хотя это работает в моем (минимальном) примере. Вы проверили, что файл / каталог журналов существует и имеет разумные разрешения?
Бертиб
0

Событие, которое вы хотите зарегистрировать, уже зарегистрировано в Linux. Взгляните на него /var/log/auth.logи попробуйте отфильтровать или проанализировать его в соответствии с вашими потребностями, а не пытаться создать собственный файл журнала.

Вот выборка из рассматриваемого журнала:

Feb 19 10:23:47 localhost sudo:    larssend : TTY=pts/1 ; PWD=/home/larssend ; USER=root ; COMMAND=/usr/sbin/useradd -m -s /bin/bash -U tst
Feb 19 10:23:47 localhost sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Feb 19 10:23:47 localhost useradd[1661]: new group: name=tst, GID=1001
Feb 19 10:23:47 localhost useradd[1661]: new user: name=tst, UID=1001, GID=1001, home=/home/tst, shell=/bin/bash
Feb 19 10:23:48 localhost sudo: pam_unix(sudo:session): session closed for user root
Feb 19 10:23:50 localhost sudo:    larssend : TTY=pts/1 ; PWD=/home/larssend ; USER=root ; COMMAND=/usr/sbin/userdel -r tst
Feb 19 10:23:50 localhost sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Feb 19 10:23:50 localhost userdel[1667]: delete user 'tst'
Feb 19 10:23:50 localhost userdel[1667]: removed group 'tst' owned by 'tst'
Feb 19 10:23:50 localhost userdel[1667]: removed shadow group 'tst' owned by 'tst'
Feb 19 10:23:50 localhost sudo: pam_unix(sudo:session): session closed for user root

Как вы можете видеть, в нем есть почти все, что вам нужно знать о создании и удалении учетных записей пользователей, в том числе о том, кто выполнил создание / удаление путем sudoрегистрации. Обратите внимание, что если создатель не использовал sudoдля вызова useraddили userdel, возможно, вам придется выполнить дополнительную работу, чтобы выяснить, кто выполнил создание / удаление.

Larssend
источник
Пожалуйста, внимательно прочитайте вопрос. Ваш ответ не отвечает на оригинальный вопрос. ОП пытается самостоятельно создавать новые учетные записи, а не регистрировать существующие творения.
ДэвидПостилл
@DavidPostill: «Для каждой созданной учетной записи пользователя добавьте строчную запись в файл /home/daniel/logs/useraccounts.log». Я советовал против именно этого.
Larssend