Shell脚本自动创建用户
Shell脚本创建用户时,为了用户的账户安全,最好能生成满足复杂性要求的随机密码。下面的一段代码通过定义一个字符串序列,并随即读取出字符串的某个位置值来生成随机密码,Bash 2.x或以上版本支持。
#!/bin/sh
MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ \
abcdefghijklmnopqrstuvwxyz./*&^%$#@!()"
# May change 'LENGTH' for longer password, of course.
LENGTH="8"
while [ "${n:=1}" -le "$LENGTH" ]; do
PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
let n+=1
done
echo "$PASS" # ==> Or, redirect to file, as desired.
exit 0
说明:
- ':=' 操作符用于赋予默认值,当变量n未被赋值时,将变量n的值设置为1
- $RANDOM变量返回0-32767之间的随机数
- ${#MATRIX}返回字符串长度
- $(($RANDOM%${#MATRIX}))通过整数操作符返回1到字符串长度减1之间的整数
- ${MATRIX:POSITION:LEN}从字符串指定位置开始截取指定长度的字符串,这里每次只取一个字符
- PASS="$PASS$VAR"则是将截取出来的字符添加到密码字符串中,每次循环添加一个字符。
在Shell脚本中修改密码,passwd程序支持从标准输入中读取密码字符串,如下所示:
PASSWD='mypass'
echo 'mypass' |passwd username --stdin
上述代码需要root用户执行。

Leave a comment