私はこのためにさまざまなスクリプトを組み合わせる簡単な方法を探していました。私はスクリプティングに精通していませんが、改善に努めていますので、楽にしてください。どんな助けでも大変感謝します。
私はこの記事の著者ではありませんが、この記事を始めとして使用します。 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
答え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'