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を介して実行されます。

答え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'

関連情報