Buscando um script que possa fazer o loop de ssh para uma lista de ips e executar useradd, diretório inicial, criação e o usuário no arquivo sudoers

1

Eu tenho procurado por toda parte uma maneira simples de combinar vários scripts para fazer isso. Eu não sou o mais strong no script, mas estou trabalhando para melhorar, então vá com calma comigo. Qualquer ajuda aqui é apreciada.

Eu não sou o autor disso, mas estou usando isso como um começo. Eu gostaria de entender qual seria a melhor abordagem para executar isso em uma lista de ips. Estou mais interessado em simplicidade e compreensão se um usuário já existe e se ele cometer erros.

#!/bin/bash
# Script to add a user to Linux system
if [ $(id -u) -eq 0 ]; then
read -p "Enter username : " username
read -s -p "Enter password : " password
egrep "^$username" /etc/passwd >/dev/null
if [ $? -eq 0 ]; then
    echo "$username exists!"
    exit 1
else
    pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
    useradd -m -p $pass $username
    [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
fi
else
echo "Only root may add a user to the system"
exit 2
fi
    
por Glenn B. 07.12.2016 / 20:46

2 respostas

1

Em vez de depender de scripts para fazer isso, confira ansible , o que torna essas tarefas menos propensas a erros. pode ser executado várias vezes sem problemas, pois é idempotente. Também é sem agente e executa o ssh.

por 07.12.2016 / 23:06
0

Aqui está um script que acabei de criar para demonstrar como fazer isso.

 #!/usr/bin/env bash

warn() 
{
    printf '%s\n' "$@" >&2
}

die() 
{
    local st="$?"
    warn "$@"
    exit "$st"
}


anotherUser() {
    read -p "Add another user [y/n] " yn
    if [[ $yn = *[yY]* ]]; then
        checkUser
    fi
    exit        
}   
checkUser() {

while :
    do
        read -p "Enter user: " userName
        if id $userName 2>/dev/null
            then echo "User exists"
            anotherUser
        else
        read -p 'Enter pass: ' passWord
            adduser "$userName"
            echo "$passWord" | passwd "$userName" --stdin
            printf "User %s has been added\n" "$userName"
            exit
        fi  
    done
}

if (( EUID == 0 )); then
    checkUser
else
    die "You must be root"
fi

Certifique-se de copiar o script em servidores remotos e executá-lo como segue

ssh -t root@remoteserver 'bash accountScript'

    
por 07.12.2016 / 21:14

Tags