背景
因为需要对服务器进行管理,所以需要为集群中的服务器增加work用户,并为work用户设置密码Work@123。这里需要分析创建work用户的2种情况:
1)当前服务器存在work,那么此时就需要重新为work设置密码,因为先前存在的work用户并不是我创建的;此时将work用户密码设置为Work@123:echo “Work@123” | passwd --stdin work;
2)当前服务器不存在work用户,此时新建work用户,并同时为work用户创建家目录:useradd -m work;并设置密码:echo “Work@123” | passwd --stdin work;
有了前面的思考,此时我使用root用户在集群的服务器上执行下面的脚本。需要注意的是,要执行下面的脚本,需要提前做好脚本所在服务器到其他服务器的免密登录。
这里需要注意的核心命令是: echo “新密码” | passwd --stdin 用户名
配置文件
在脚本中使用到一个配置文件,其内容为:
10.191.0.1
10.191.0.2
10.191.0.3
脚本
经过前面的分析,脚本编写如下:
#!/bin/bash
#
# 检查集群各服务器是否存在work用户,并设置密码为Work@123
########################################################
## 预置变量
host_config="/home/work/all_host"
username="work"
command="if id -u $username > /dev/null 2>&1; then echo \"$username exist\" ; \
echo "Work@123" | passwd --stdin $username; \
else echo \"there is no $username\"; useradd -m work ; \
echo "Work@123" | passwd --stdin $username; fi "
## 脚本开始执行
[ ! -f $host_config ] && {
echo "there is no config file named host_config..............."
exit 1
}
# 不读取#注释的行
hosts=`cat $host_config | grep -v "^#"`
for ip in $hosts
do
# echo 不换行输出
echo -n "$ip :"
# 通过ssh执行命令
ssh root@$ip "$command"
done
至此所有需求已通过脚本实现。