SSH를 IP 목록에 반복하고 useradd, home, create 및 sudoers 파일을 실행할 수 있는 스크립트를 찾고 있습니다.

SSH를 IP 목록에 반복하고 useradd, home, create 및 sudoers 파일을 실행할 수 있는 스크립트를 찾고 있습니다.

저는 이를 위해 다양한 스크립트를 결합하는 쉬운 방법을 찾고 있었습니다. 저는 스크립팅에 능숙하지는 않지만 개선하기 위해 노력하고 있으니 편하게 대해주세요. 어떤 도움이라도 대단히 감사하겠습니다.

나는 이 기사의 저자는 아니지만 이 기사를 시작으로 사용하겠습니다. IP 목록에 대해 이것을 실행하는 가장 좋은 방법이 무엇인지 이해하고 싶습니다. 내가 가장 관심을 갖는 것은 단순성과 사용자가 이미 거기에 있는지, 그리고 뭔가 잘못되었는지를 이해하는 것입니다.

#!/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

답변1

이 작업을 수행하기 위해 스크립트에 의존하지 마세요. 확인해 보세요.안시푸르, 이는 이러한 작업을 오류가 덜 발생하게 만들고 멱등성이기 때문에 문제 없이 여러 번 실행될 수 있습니다. 또한 에이전트가 없으며 SSH를 통해 실행됩니다.

  • 변수 프롬프트: 사용자 이름과 비밀번호를 물어보세요
  • 사용자 모듈:사용자, 홈 디렉토리 등을 생성합니다.
  • 그룹 모듈: 사용자 모듈 외부에 그룹을 생성하려는 경우
  • 파일의 줄: sudoer를 수정하는 방법도 좋은 예가 있는데, 반드시 verify 옵션으로 확인해 보세요.

답변2

이 작업을 수행하는 방법을 보여주기 위해 방금 만든 스크립트는 다음과 같습니다.

 #!/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

반드시 스크립트를 원격 서버에 복사하고 다음과 같이 실행해 보세요.

ssh -t root@remoteserver 'bash accountScript'

관련 정보