Shell 自动化运维编程练习

文章介绍了三个关于Linux脚本的示例:使用for循环创建20个账户,测试网段主机连通性并记录结果,以及批量修改多台主机的root密码。涉及到了用户输入、条件判断、文件操作和SSH免密登录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一题

  • 编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用户输入,例如:test1、test2、test3、......、test10

第一步:编写脚本

[root@server ~]# vim for1.sh
#!/bin/bash
read -p "请输入创建账户名:" name
read -p "请输入创建账户密码:" pw
for ((i=1;i<=20;i++))
do
        if id -u $name$i  &> /dev/null
        then
                echo "$name$i账户已存在"
        else
                useradd $name$i
                if(($? == 0))
                then
                        echo "$pw" | passwd --stdin $name$i &> /dev/null
                        echo "$name$i账户创建成功"
                else
                        echo "账户创建失败"
                        exit
                fi
        fi
done

image-20230901193755900

第二步:测试

[root@server ~]# bash for1.sh
请输入创建账户名:test
请输入创建账户密码:123456

image-20230901193841443

image-20230901193908719

第二题

  • 编写脚本for2.sh,使用for循环,通过ping命令测试网段的主机连通性,IP前3段由用户输入,如:输入192.168.118,则ping 192.168.118.125-192.168.118.135,将可以ping通的主机IP地址写入到/tmp/host_up.txt文件中,不能ping通的主机IP地址写入到:/tmp/host_down文件中

第一步:创建/tmp/host_up.txt文件和/tmp/host_down文件

[root@server ~]# touch /tmp/host_up.txt
[root@server ~]# touch /tmp/host_down.txt

第二步:编写脚本

[root@server ~]# vim for2.sh
#!/bin/bash
read -p "请输入网段:" ip
for((i=125;i<=135;i++))
do
        if  ping -c 2 -w 3 $ip.$i &> /dev/null
        then
                echo "主机$ip.$i连通" >> /tmp/host_up.txt
        else
                echo "主机$ip.$i不连通" >> /tmp/host_down.txt
        fi
done
echo "连通主机信息:"
cat /tmp/host_up.txt
echo
echo "不连通主机信息:"
cat /tmp/host_down.txt

image-20230901195523273

第三步:测试

[root@server ~]# bash for2.sh
请输入网段:192.168.118

image-20230901200128107

第三题

  • 使用for循环实现批量主机root密码的修改

第一步:打开三台主机

image-20230901200258596

第二步:将node1,node2主机的ip地址写入ip.txt 文件中

[root@server ~]# vim ip.txt
192.168.118.130
192.168.118.131

第三步:建立免密sshd登录

1>制作公私对

[root@server ~]# ssh-keygen -t rsa

image-20230901201440719

2>将公钥上传

[root@server ~]# ssh-copy-id root@192.168.118.130
[root@server ~]# ssh-copy-id root@192.168.118.131

image-20230901202341191

第四步:编写脚本

[root@server ~]# vim for3.sh
#!/bin/bash
read -p "请输入修改的密码:" pw
for i in $(cat ip.txt)
do
        ssh $i "echo '$pw' | passwd  --stdin root"
done

image-20230901204056002

第五步:测试

[root@server ~]# bash for3.sh
请输入修改的密码:123
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。

image-20230901203908431

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值