LINUX中如何用shell脚本批量设置用户密码?

LINUX中如何用shell脚本批量设置用户密码?,第1张

while read line

do

user=`echo $line|cut -d : -f 1`

useradd $user

password = `echo $line | cut -d : -f 2`

echo "$password" | passwd --stdin "$user"

done<userlist.txt

Linux下 Passwd有参数 --stdin This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.

--stdin参数表明passwd可以从标准输入或者管道接收密码

写好了,还在测试,测试好了就给你。

写好了,通过测试了。

########################################################################

#注:本脚本中使用了函数模块,以方便修改和调试

#************************************************

# 2011年12月10日 初稿

#************************************************

# 2011年12月11日 测试 问题:密码修改函数尚未实现

#************************************************

# 2011年12月11日 定稿 密码修改函数实现

#************************************************

#by bmw88661@126.com 12.11.2011

########################################################################

#设置变量

i=1

username=exam

password=gdlclinux

rmso=$(tput rmso)

smso=$(tput smso)

#此处可添加要求输入用户名和密码的项

#错误判断函数

SEA()

{

location=$( which useradd )#查找useradd的绝对路径

if [ \( "$location" = "" \) -o \( -s "$location" \) ] #判断是否找到useradd文件,或着找到的文件为空

then

echo "Useradd was not found,job terminated $smso unsuccessfully$rmso!"

exit

else

if [ -x "$location" ] #若useradd文件存在且不为空,判断是否具有可执行权限

then

echo "Command useradd doesn't have excution(x) mode"

exit

else#无法确定问题原因

echo "Script terminated by some unknown problem,Please check it!"

exit

fi

fi

}

#提示信息函数

casemsg()

{

#判断passwd执行的返回值,并进入case分支

case "$y" in

0) echo "Set password for $smso $username$i$rmso successfully"

1) echo "Permission denied when set password for $smso $username$i$rmso"

exit 1

2) echo "Invalid combination of options for command passwd"

exit 2

3) echo "Unexpected failure, nothing done"

exit 3

4) echo "Unexpected failure, passwd file missing"

exit 4

5) echo "Passwd file busy, try again"

exit 5

6) echo "Invalid argument to option"

exit 6

esac

}

#用户创建函数

usercreate()

{

useradd -m $username$i #如果需要其他功能,请参照useradd帮助手册修改此行,如:设置uid

x=$?

}

#密码修改函数

#这里如果你的系统里有chpasswd这个批修改工具的话,就不用这么麻烦了。

MOVpassword()

{

( echo "$password"sleep 1echo "$password" )|passwd $username$i#若useradd执行成功,则调用passwd设置密码

y=$?

}

#主循环

while [ "$i" -ge 1 -a "$i" -le 30 ]

do

usercreate #调用usercreate函数创建用户

if [ "$x" -eq 0 ] #判断useradd是否执行成功

then

echo "User $smso $username$i$rmso have been create successfully!"

MOVpassword #调用MOVpassword修改密码

casemsg #调用casemsg函数

if [ "$y" = 0 ] #如果MOVpassword的返回值为0,则将i加1

then

let i++

fi

else

SEA #调用错误判断函数

fi

done

unset i x y location rmso smso username password #释放所有设定的变量

可以建立一个shell脚本处理,脚本内容如下,这只是个简单的脚本,没有对用户设置组和家目录,也没有判断用户是否存在,实际应用中需要注意处理:

#!/bin/bash

#设置初始密码

kpasswd="12345"

for kuser in k1 k2 k3 k4 k5

do

useradd $kuser

echo "$kuser:$kpasswd" | chpasswd

echo "用户$kuser建立成功,初始密码是$kpasswd"

done


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11894122.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存