Script do Linux para extrair nomes de usuários do arquivo de texto

0

Eu sou um iniciante em scripts, mas criei um arquivo de texto chamado text.dat que contém apenas nomes de usuário no local do arquivo /home/daniel/text.dat e estou tentando executar um script (chamado addusers.sh ) que exibe os nomes desse arquivo de texto e criará uma nova conta de usuário no sistema para cada nova conta de usuário especificada no arquivo text.dat .

Para cada conta de usuário criada, acrescente uma entrada de linha ao arquivo /home/daniel/logs/useraccounts.log . A entrada de linha conterá as seguintes informações:

added | < user account name > | < day and time of creation >
. Isto é o que eu tenho até agora:
 #!/bin/bash 
echo “cat text.dat” 
newuser= grep /home/daniel/text.dat 
sudo adduser $newuser
    
por Daniel Wilson 19.02.2017 / 02:05

2 respostas

0

Como posso adicionar usuários a um sistema Linux, conforme listado em um arquivo?

Algo como o seguinte deve fazer se você quiser que o processo seja totalmente automatizado (executado por meio de, por exemplo, sudo ./addusers.sh ):

#!/bin/bash
# addusers.sh - Add users to system and output a log of same
# run as root or via sudo

usersfile=/home/daniel/text.dat
logfile=/home/daniel/logs/useraccounts.log

while read user; do
   echo "Adding $user"
   adduser --gecos "" --disabled-password $user
   echo "added | $user | 'date' |" >> $logfile
done < $usersfile

Com opções (da adduser manpage):

--disabled-password

Like --disabled-login, but logins are still possible (for example using SSH RSA keys) but not using password authentication.

( --disabled-login funcionaria também, eu acho)

--gecos GECOS

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

Você pode deixar essas opções para adduser off se quiser especificar uma senha e / ou informações de usuário.

Você também pode especificar como deseja que o dia e hora da criação seja especificado através das opções para date , por exemplo

$ date "+%Y-%m-%d %H%M"
2017-02-19 0330
    
por 19.02.2017 / 04:26
0

O evento que você deseja registrar já está sendo registrado pelo Linux. Dê uma olhada em /var/log/auth.log e tente filtrar ou analisar de acordo com sua necessidade específica, em vez de tentar criar seu próprio arquivo de registro.

Veja uma amostra do registro em questão:

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

Como você pode ver, ele tem praticamente tudo que você precisa saber sobre a criação e exclusão de contas de usuários, incluindo quem executou a criação / exclusão por meio de sudo logging. Se o criador não usou sudo para chamar useradd ou userdel , talvez seja necessário executar algum trabalho extra para descobrir quem executou a criação / exclusão.

    
por 19.02.2017 / 04:17

Tags