Quando há um ambiente que existe varios servidores e não existe a centralização das contas, e é preciso conectar em cada servidor para para criar novas contas, criei um script que faz isso.
Ele conecta em cada servidor, pede a senha do usuário root, e cria, bloqueia ou desbloqueia a conta. Lembrando que aplicativos e definições que devam ser atribuidadas a cada nova conta deve ser mantido dentro do diretório /etc/skell de cada servidor.
Vão notar no script que usei o comando chpasswd, devido ao fato que quando usamos o paramentro -p do adduser, ele assume que você já esta informando a senha criptografada, o que na verdade não acontece, informamos a senha sem criptgrafar. Logo a senha é criada sem criptografar e na sequência ela é criptografada pelo chpasswd.
Também assumi o grupo users sendo o padrão, nosso ambiente é assim, porém pode-se muda-lo ou adicionar mais uma opção para solicitar o grupo assim como fiz com nome do usuário e senha. Ex.
echo -ne "{DESCRICAO}33[40;32mInforme grupo do usuario\n{DESCRICAO}33[m"
read NOME_GRUPO
while [ -z "$NOME_GRUPO" ]; do
echo -ne "{DESCRICAO}33[40;32mInforme grupo do usuario\n{DESCRICAO}33[m"
read NOME_GRUPO
done
[2] Comentário enviado por ignti em 23/07/2024 - 17:29h
Show de bola, parabens me ajudou a seguir com o que queria e melhorei no que pude, por exemplo: no meu ambiente só quem pode logar nos servidores são os usuários que fazem parte do grupo "remoto" e user root é bloqueado para acesso remoto , então tive que alterar tbm para meu user conseguir logar já que tem que passar "sudo" ante de rodar o comando, outra particularidade é a porta no meu ambiente é modificada então tive que adicionar outro parâmetro, vou enviar o script aqui , vai que ajuda alguém com este mesmo caso que o meu!
Segue script modificado e funcional:
#!/bin/bash
# Lista de servidores
SERVERS="0.0.0.0"
# Função para adicionar usuário
add_user() {
read -p "Informe nome do usuário: " NOME_USUA
while [ -z "$NOME_USUA" ]; do
read -p "Informe nome do usuário: " NOME_USUA
done
read -s -p "Informe a senha do usuário: " SENHA_USU
echo
while [ -z "$SENHA_USU" ]; do
read -s -p "Informe a senha do usuário: " SENHA_USU
echo
done
read -p "Informe o grupo do usuário: " GRUPO_USUA
while [ -z "$GRUPO_USUA" ]; do
read -p "Informe o grupo do usuário: " GRUPO_USUA
done
# Cria a conta no servidor local
echo "sua_senha_root" | sudo -S adduser $NOME_USUA --gecos "" --disabled-password
echo "$NOME_USUA:$SENHA_USU" | sudo -S chpasswd
echo "sua_senha_root" | sudo -S usermod -aG remoto,$GRUPO_USUA $NOME_USUA
for servs in $SERVERS; do
echo "Adicionando $NOME_USUA em $servs"
ssh -p 0000 seuuser@$servs "echo 'sua_senha' | sudo -S adduser $NOME_USUA --gecos '' --disabled-password && echo '$NOME_USUA:$SENHA_USU' | sudo -S chpasswd && echo 'sua_senha' | sudo -S usermod -aG sudo,$GRUPO_USUA $NOME_USUA"
if [ $? == 0 ]; then
echo "Usuário $NOME_USUA criado com sucesso em $servs."
else
echo "Erro ao criar o usuário $NOME_USUA em $servs."
fi
done
}
# Função para bloquear usuário
lock_user() {
read -p "Informe nome do usuário: " NOME_USUA
while [ -z "$NOME_USUA" ]; do
read -p "Informe nome do usuário: " NOME_USUA
done
for servs in $SERVERS; do
echo "Bloqueando $NOME_USUA em $servs"
ssh -p 0000 seuuser@$servs "echo 'sua_senha' | sudo -S usermod -L $NOME_USUA"
if [ $? == 0 ]; then
echo "Usuário $NOME_USUA bloqueado com sucesso em $servs."
else
echo "Erro ao bloquear o usuário $NOME_USUA em $servs."
fi
done
}
# Função para desbloquear usuário
unlock_user() {
read -p "Informe nome do usuário: " NOME_USUA
while [ -z "$NOME_USUA" ]; do
read -p "Informe nome do usuário: " NOME_USUA
done
for servs in $SERVERS; do
echo "Desbloqueando $NOME_USUA em $servs"
ssh -p 0000 seuuser@$servs "echo 'sua_senha' | sudo -S usermod -U $NOME_USUA"
if [ $? == 0 ]; then
echo "Usuário $NOME_USUA desbloqueado com sucesso em $servs."
else
echo "Erro ao desbloquear o usuário $NOME_USUA em $servs."
fi
done
}