Introdução
Neste desafio, você criará um script bash chamado userctr.sh para automatizar a adição e exclusão em lote de usuários em um servidor. Você escreverá um script que aceita argumentos de linha de comando para especificar a operação (add ou del), o nome de usuário de um professor, um prefixo para os nomes de usuário dos alunos e o número de alunos a serem gerenciados. Esta tarefa aprimorará suas habilidades em shell scripting, gerenciamento de usuários e automação, que são cruciais para a administração de sistemas.
Criação e Exclusão em Lote de Usuários e Grupos
Um administrador de sistemas precisa de uma forma eficiente de adicionar um professor e múltiplos usuários de alunos a servidores de sala de aula. Criar cada conta manualmente é tedioso e propenso a erros. Sua tarefa é criar um script bash, userctr.sh, para automatizar este processo. O script receberá o tipo de operação, o nome do professor, o prefixo do nome do aluno e o número de alunos como parâmetros.
Tarefas
- Crie um script Bash chamado
userctr.shno diretório/home/labex/project. - O script deve implementar duas operações principais:
addedel, determinadas pelo primeiro argumento da linha de comando. - Para a operação
add, crie um usuário professor e um número especificado de usuários alunos. - Para a operação
del, exclua os usuários professor e alunos especificados. - O script deve validar todos os parâmetros de entrada de acordo com os requisitos abaixo.
Requisitos
Formato de Execução: O script deve ser executável com quatro argumentos:
sh userctr.sh <operation> <teacher_name> <student_prefix> <student_count>Validação de Parâmetros:
- O script deve receber exatamente quatro argumentos. Caso contrário, deve imprimir
parameter errore sair. - O
student_count(quarto argumento) deve ser um número inteiro entre 1 e 10, inclusive. Caso contrário, imprimaparameter errore saia. - O
student_prefix(terceiro argumento) deve consistir apenas de letras minúsculas. Caso contrário, imprimaparameter errore saia.
- O script deve receber exatamente quatro argumentos. Caso contrário, deve imprimir
Detalhes da Operação
add:- Se um usuário a ser adicionado já existir, não tente criá-lo. Em vez disso, imprima o nome de usuário seguido por
******(por exemplo,stu3:******). - Para novos usuários, gere uma senha numérica aleatória de 6 dígitos.
- Imprima o nome de usuário e sua senha para cada usuário recém-criado, separados por dois pontos (por exemplo,
teacher:901231). - Todos os usuários criados devem usar
/bin/zshcomo seu shell padrão. - O usuário professor deve ser adicionado ao grupo
sudopara conceder privilégios administrativos.
- Se um usuário a ser adicionado já existir, não tente criá-lo. Em vez disso, imprima o nome de usuário seguido por
Detalhes da Operação
del:- O script deve excluir os usuários professor e alunos especificados, incluindo seus diretórios home.
- A operação
delnão deve produzir nenhuma saída. - Se um usuário a ser excluído não existir, o script não deve reportar um erro e deve prosseguir com a exclusão dos outros usuários existentes.
Exemplo
Os exemplos a seguir demonstram o comportamento esperado do seu script.
Adicionando Usuários: Este comando adiciona um professor (
teacher) e seis alunos (stu1astu6).sh userctr.sh add teacher stu 6Exemplo de Saída:
teacher:901231 stu1:271828 stu2:928172 stu3:****** stu4:384712 stu5:098273 stu6:921098Nesta saída, os asteriscos para
stu3indicam que o usuário já existia, portanto, uma nova senha não foi gerada.Excluindo Usuários: Este comando exclui o mesmo conjunto de usuários. Não deve produzir nenhuma saída após a conclusão bem-sucedida.
sh userctr.sh del teacher stu 6
Dicas
- Use
sudoantes de comandos que exigem privilégios de root, comouseraddeuserdel. - Verifique o número de argumentos com
$#. - Acesse os argumentos usando
$1,$2, etc. - Para verificar se um usuário existe, você pode usar
id -u <username>. O comando terá um código de saída diferente de zero se o usuário não existir. - Use
useradd -m -s /bin/zsh <username>para criar um usuário com um diretório home e definir o shell Zsh. - Use
usermod -aG sudo <username>para adicionar um usuário ao gruposudo. - Use
userdel -r <username>para excluir um usuário e seu diretório home. - Para gerar um número aleatório de 6 dígitos, você pode usar
shuf -i 100000-999999 -n 1. - Um loop
foré útil para iterar pelo número de alunos:for ((i=1; i<=$student_count; i++)). - Use
if [[ "$string" =~ "regex" ]]para correspondência de padrões para validar parâmetros.
Resumo
Parabéns! Você criou com sucesso um script bash para automatizar o gerenciamento de usuários. Este script pode adicionar e excluir usuários em lote, validar parâmetros de entrada e lidar com usuários existentes, que são habilidades essenciais para qualquer administrador de sistemas. Você praticou o uso de instruções condicionais, loops, argumentos de linha de comando e comandos externos como useradd e userdel dentro de um script.



