我目前正在尝试创建一个脚本,在运行此特定bash脚本时向用户呈现任何特定人员。在菜单上我允许三个选项(1.添加用户,2.删除用户和3.退出)。关于添加用户选项一旦选择,应该有2个选项允许用户手动输入新用户的详细信息或通过文本文件添加多个用户。我已经能够创建上述菜单/选项,尽管我一直无法为添加用户手动创建任务的脚本/主体,也无法通过txt文件和删除用户创建多个用户。Bash脚本添加,删除用户?
任何与我的代码的帮助将不胜感激!非常感谢!
这里是我的脚本,截至目前:
#!/bin/bash
clear
echo "########## MENU ############\n"
options=("add_user" "delete_user" "exit")
select opt in "${options[@]}"
do
case $opt in
"add_user")
clear
while [ 1 ]
do
clear
echo "1. Add user manually"
echo "2. Add user via TXT file"
read -p "Enter your choice" ch
case $ch in
1)
read -p "Enter user name : " useradd
read -p "Enter user password:" passwd
echo -e "Successfully added the user"
;;
2)
if [ $(id -u) -eq 0 ]; then
for row in `more $1`
do
username=${row%:*}
password=${row#*:}
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
done
else
echo "Only root may add a user to the system"
exit 2
fi
esac
done
;;
"delete_user")
read -p "Enter a User name to delete "UNAME
passwd
deluser $UNAME
echo "User $UNAME has been deleted"
;;
"exit")
break
;;
esac
done
很多问题。几个建议:1)开发/调试不是最好的做法,因为开发人员是root(添加根检查,当主逻辑工作时)2.)您可以使用嵌套的'select's(对于添加用户), 3.)设置PS3为更好的选择的提示,4.)你的'清除'clearnig你的错误信息,所以你应该要么不使用清除或在错误信息后暂停你的脚本5)为什么你使用'more'而不是'cat'还是(更好)一个简单的重定向到while循环? 6)最后,最重要的是 - 将脚本分解为bash函数以提高可管理性。 – jm666 2013-05-01 08:03:13
非常感谢您的回复!我不完全明白你的意思,因为我就是你所说的小白菜。如果你不介意,你是否能够回复一个改进的脚本。需要尽快。意思很多,谢谢。 – user2265307 2013-05-01 08:17:52