Shell 脚本自动创建用户

(0 comments)

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用户执行。

Currently unrated

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required