求个网站你们知道的,企业网站的宣传功能体现在().,企业网站建设比较调查怎么写,怎么申请微信公众号目 录
一、要求
二、解决方案
#xff08;一#xff09;解决思路
#xff08;二#xff09;方案
三、脚本程序实现
#xff08;一#xff09;脚本代码和解释
1、脚本代码
2、代码解释
#xff08;二#xff09;脚本验证
1、脚本编辑
2、给予执行权…目 录
一、要求
二、解决方案
一解决思路
二方案
三、脚本程序实现
一脚本代码和解释
1、脚本代码
2、代码解释
二脚本验证
1、脚本编辑
2、给予执行权限
3、运行脚本查看效果
四、扩展 一、要求 有时候在安装一个linux系统后要创建很多用户账户名不同、密码不同这就非常麻烦。有没有办法直接把客户给我们的账号密码表直接读出来然后通过一个命令完成所有的操作
二、解决方案
一解决思路 可以写一个bash脚本一行行的读取账户密码文件解析出账号名和密码然后再调用useradd和passwd等命令来添加账号和密码。
二方案 1把账号密码表文件的内容进行格式化以便脚本可以直接读取 2判断文件存在性 3判断用户是否存在 4遍历文件读出账号名和密码 5调用useradd和passwd添加用户和密码到系统中。
三、脚本程序实现 直接把脚本写出来分享给大家。
一脚本代码和解释
1、脚本代码 由于我的环境是centos7.9编写如下bash代码可以在centos7以后得版本运行如下
#!/bin/bash
#提前准备账号密码文件 userlist.txt
#文件内每个账号密码组使用逗号分隔username,password# 检查userlist.txt文件是否存在
if [ ! -f userlist.txt ]; thenecho userlist.txt 文件不存在.exit 1
fi# 从userlist.txt中读取用户和密码并创建用户
while IFS, read -r username password; do# 检查用户是否已存在if ! id $username /dev/null; then# 创建用户if useradd $username /dev/null; then# 设置密码echo $password | passwd --stdin $usernameif [ $? -eq 0 ]; thenecho 用户 $username 创建成功密码已设置.elseecho 为用户 $username 设置密码失败.# 这里可以选择是否删除刚创建的用户# userdel -r $usernamefielseecho 创建用户 $username 失败.fielseecho 用户 $username 已存在.fi
done userlist.txt2、代码解释 脚本的目的是从一个名为userlist.txt的文件中读取用户名和密码并尝试在系统中创建对应的用户并设置密码 。 解释如下
1. if [ ! -f userlist.txt ]; then * 这是一个条件判断语句检查userlist.txt文件是否存在。-f是一个测试运算符用于检查指定的文件是否存在且是一个常规文件。 * !是一个逻辑非运算符用于反转条件的结果。因此! -f userlist.txt将返回真即非零退出状态如果userlist.txt文件不存在。
2. echo userlist.txt 文件不存在. * 如果上面的条件为真即userlist.txt不存在则输出错误信息。
3. exit 1 * 如果userlist.txt不存在脚本将立即退出并返回状态码1表示出现错误。
4. fi * 表示if语句的结束。
5. while IFS, read -r username password; do * 这是一个while循环用于逐行读取userlist.txt文件的内容。 * IFS,设置了内部字段分隔符Internal Field Separator为逗号这意味着read命令会将每行内容按照逗号分隔成不同的字段。 * read -r username password读取每行的内容并将其分别赋值给username和password变量。-r选项使read命令不解释反斜杠转义字符。
6. if ! id $username /dev/null; then * 检查用户是否已经存在。id命令用于获取用户的UID用户ID和GID组ID。如果用户不存在id命令会返回一个非零的退出状态。 * /dev/null是一个重定向它将标准输出和标准错误都重定向到/dev/null这意味着任何由id命令产生的输出或错误消息都会被丢弃脚本不会显示它们。
7. if useradd $username /dev/null; then * 如果用户不存在则尝试使用useradd命令创建新用户。 * 同样/dev/null用于丢弃任何输出或错误消息。
8. echo $password | passwd --stdin $username * 如果用户创建成功则使用passwd命令和--stdin选项设置用户的密码。这里使用了管道|它将echo命令的输出即密码作为passwd命令的输入。
9. if [ $? -eq 0 ]; then * 检查上一个命令即passwd的退出状态。在bash中$?保存了上一个命令的退出状态。退出状态0通常表示命令成功执行非零值表示出错。
10. echo 用户 $username 创建成功密码已设置. * 如果passwd命令成功执行即退出状态为0则输出成功信息。
11. else * 如果passwd命令执行失败即退出状态非零则执行以下语句。
12. echo 为用户 $username 设置密码失败. * 输出密码设置失败的信息。 * 注释中提到了可以选择删除刚创建的用户但脚本中没有实现这一操作。
13. fi * 表示第一个if语句即检查用户是否存在并尝试创建用户的语句的结束。
14. else * 如果用户已经存在则执行以下语句。
15. echo 用户 $username 已存在. * 输出用户已存在的信息。
16. fi * 表示第二个if语句即检查用户是否已存在的语句的结束。
17. done userlist.txt * 表示while循环的结束并从userlist.txt文件中读取下一行内容。这个重定向使得while循环能够从userlist.txt文件中逐行读取内容。
二脚本验证
1、脚本编辑 使用编辑器比如vi把代码输入进去 保存这个脚本到一个文件中比batch_create_user.sh
2、给予执行权限 chmod x w batch_create_user.sh 3、运行脚本查看效果 可以运行这个脚本来检查进程的运行情况如下 [rootlocalhost home]#
[rootlocalhost home]#
[rootlocalhost home]# cat userlist.txt
user-1,test123
user-2,test223
user-3,test323
[rootlocalhost home]#
[rootlocalhost home]#
[rootlocalhost home]# cat /etc/passwd | awk -F: $31000 {print $1}
home
user6
[rootlocalhost home]#
[rootlocalhost home]#
[rootlocalhost home]# sh batch_create_user.sh
更改用户 user-1 的密码 。
passwd所有的身份验证令牌已经成功更新。
用户 user-1 创建成功密码已设置.
更改用户 user-2 的密码 。
passwd所有的身份验证令牌已经成功更新。
用户 user-2 创建成功密码已设置.
更改用户 user-3 的密码 。
passwd所有的身份验证令牌已经成功更新。
用户 user-3 创建成功密码已设置.
[rootlocalhost home]#
[rootlocalhost home]#
[rootlocalhost home]# cat /etc/passwd | awk -F: $31000 {print $1}
home
user6
user-1
user-2
user-3
[rootlocalhost home]#从实际运行可以看出user-1user-2user-3已经成功设置好。脚本运行正常。 四、扩展 在实际使用中 可能还要设置用户的其他公有属性可以直接添加到脚本中。 另外需要注意的是密码是作为明文放到文件中的分发给每个人的时候要求大家一定要更改密码。可以编写一个脚本检验用户是否更改了密码具体如何做就不累述了。