저는 이를 위해 다양한 스크립트를 결합하는 쉬운 방법을 찾고 있었습니다. 저는 스크립팅에 능숙하지는 않지만 개선하기 위해 노력하고 있으니 편하게 대해주세요. 어떤 도움이라도 대단히 감사하겠습니다.
나는 이 기사의 저자는 아니지만 이 기사를 시작으로 사용하겠습니다. 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'