以下代码用于使用bash脚本创建用户配置文件(顺便说一下,我是一个完整的初学者),我无法弄清楚我的代码的问题。当使用read -p进行输入时,我收到错误“不是有效的标识符”。我也遇到了结束文件的问题,因为我收到错误“语法错误:意外的文件结束”。
read -p "Please enter a username : " username
read -p "Please enter a password : " password
egrep "^$username" /etc/passwd >/dev/null
if [ $? == 0 ]; then
echo "$username already exists!"
exit 1
else
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
useradd -m -p $pass $password
[ $? == 0 ] && echo "User had been succesfully created and added to system group" || echo "Failed to create and add user to system group"
exit 2
fi
谢谢!
答案 0 :(得分:0)
一些注意事项:
-q
标志来禁止egrep
crypt
加密密码可能不是一个好主意。而是使用系统passwd
为用户添加密码 useradd
关于-p
标志的手册页:
注意:建议不要使用此选项,因为密码(或 列出流程的用户将可以看到加密密码。
您应确保密码符合系统密码 政策。
我认为您的主要问题是将未加密的密码作为useradd
命令的用户名传递,以下内容有效:
#!/bin/bash
read -r -p "Please enter a username : " username
egrep -q "^$username" /etc/passwd
if [[ $? -eq 0 ]]; then
printf "\n%s already exists!\n" "$username"
exit 1
else
useradd -m "$username" && passwd "$username"
if [ $? == 0 ]; then
printf "\nUser had been succesfully created and added to system group\n"
else
printf "\nFailed to create and add user to system group\n"
exit 2
fi
fi