先讲思路吧。
第一个要求是批量创建用户,用户名为存活ip,那么需要考虑的是存活ip有那些这是一个重点,因为创建用户也只是需要useradd id外面在套一层循环就可以了。
而存活ip是可以通过ping一下就可以知道了,那么现在就可以通过for语句进行循环,让他去ping一下:for IP in $(echo 192.168.1.{2.254})
然后在循环语句里ping一下
在通过$?是否等于0来进行判断是否成功
成功输出成功信号即可
以上判断成功后可以注释掉(注:必须先运行一遍已检查是否成功才可以注释)
然后就可以进行注册用户了
同理判断$?是否为0来确认是否存活
存活则注册,不存活判断下一个(注:创建成功记得输出屏幕)
这样存活的就注册了
(因为这里是思路所以我一步一步来,不然按脚本来说这里还要进行密码和用户的写入的)
这里结束后其实可以去home查看一下是不是创建了
然后开始思考下一步怎么写入密码和用户名
我一开始打算直接重定向写入一个文本里
也就是说直接>>yh这样的
但是发现这有一个问题,他貌似就写入了密码,不管怎么弄都弄不好ip无法同时进入(可能我学得不好也有原因)
后来我去网上找资料发现了一个好玩的,也就是tee这个命令,他可以帮助我给这个用户设置命令的同时顺便把密码输入到一个文本里面,然后就简单了,我在后面再加一条命令把用户名输入进去就可以了。
出现在密码本的顺序是:
密码
ip
这样循环下去,嘿嘿,这不就完成了嘛
以下是代码
(注:我写思路的时候会这样,想一段就一段,整体先有一个大概思路,然后切块,一块一块的来,即便是有些块应该是合在一起的我也基本是先一块一块的然后再把关联块统合起来,我不知道大佬是怎么样的,不过我感觉这样会很好的提升自己的逻辑思路)
#############################################################################
#/bin/bash
for IP in $(echo 192.168.1.{2..254})
do
ping -c 2 -i 0.1 -w 1 $IP &> /dev/null # -c:ping的次数-c 2:两次;-i:访问时间-i 0.1:0.1s;-W:定义等待超时的时间-W 3:超过3s就失败
# if [ $? -eq 0 ] ;then
# echo "Host $IP is up"
# fi #检测所在网段主机的存活主机
if [ $? -eq 0 ] ;then
useradd $IP
echo "password$IP" | md5sum |cut -c-8 | tee -a passwd.txt | passwd --stdin $IP
# else
# echo "wu"
echo $IP >> /gan/ml/passwd.txt
fi
done
#############################################################################
撤了撤了,这是补昨天的,我就是一懒人