Bash用于在Linux上验证用户帐户的正则表达式

时间:2018-01-04 19:16:53

标签: linux bash validation authentication

寻找一种更简单的方法来验证用户是请求更改本地帐户及其有效用户ID格式的密码。

有效的用户ID格式为 - ^[^a-zA-Z]*[a-zA-Z][^a-zA-Z]*t.*

第一个字母是大写或小写字母,后跟字母t后跟4个字母数字字符,总共6个字符。

目前我正在使用以下内容来评估if else - grep -Eow '\w{6}' /etc/passwd | grep ^[^a-zA-Z]*[a-zA-Z][^a-zA-Z]*t.* /etc/passwd

if  grep -Eow '\w{6}' /etc/passwd | grep ^[^a-zA-Z]*[a-zA-Z][^a-zA-Z]*t.* /etc/passwd | grep -c "$cUname" $1 >/dev/null 2>&1; then
    echo -e "$linuxPassword\n$newPassword\n$newPassword" | passwd 
else
    echo "Account is not a local account on this machine or not a valid account"
fi

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

if [[ $cUname == [[:alpha:]]t[[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] ]] &&
   grep -q "^${cUname}:" /etc/passwd
then
    echo "OK to change password"
else
    echo "$cUname: invalid username or username not found"
fi