shell脚本-编辑步骤与项目示例

脚本编程步骤

1.需求分析
根据系统管理的需求,分析脚本要实现的功能、功能实现的层次、实现的命令与语句等。
2.命令测试
将要用到的命令逐个进行测试,以决定使用的选项、要设置的变量等。
3.脚本编程
将测试好的命令写入到脚本文件中,并通过各种语句将命令执行的结果保存、判断或者发出报警等。
4.测试调优
对脚本进行测试,并根据结果进行优化。
建议一边编程一边调试,以减少错误的发生。

项目示例

需求描述
1.编写名为system.sh的脚本,记录局域网中各主机的MAC地址,保存到/etc/ethers文件中;若此文件已存在,应先转移进行备份;每行一条记录,第一列位IP地址,第2列为对应的MAC地址。
2.检查有哪些主机开启了匿名FTP服务,扫描对象为/etc/ethers文件中的所有IP地址,扫描的端口为21。
命令类型
分析:记录局域网中各主机的MAC地址;检查有哪些主机开启了匿名FTP服务
ping -c 3 -i 0.2 -w 1 ip :发送MAC地址解析请求
arp -n:MAC记录
awk :打印ip与MAC地址
使用wget下载的方法测试FTP服务

项目流程:

[root@server ~]# ping -c 3 -i 0.2 -W 3 20.0.0.10 > a.txt  '-c表示连接次数,-i表示时间间隔'
[root@server ~]# cat a.txt
[root@server ~]# arping -c 3 -I ens33 -w 3 20.0.0.10 > a.txt '-I表示使用网卡,-w表示超时时间'
[root@server ~]# cat a.txt
[root@server ~]# arping -c 1 -I ens33 -w 3 20.0.0.10 > a.txt
[root@server ~]# cat a.txt
[root@server2 ~]# yum -y install vsftpd    '安装ftp服务'
[root@server2 ~]# systemctl start vsftpd  '服务启动'
[root@server2 ~]# netstat -anpt | grep 21  '查看21号端口状态'
[root@server2 ~]# nmap -p 21 20.0.0.10  '查看对应主机21端口是否开启'
...... 
[root@server2 ~]# nmap -p 21 20.0.0.10 &> /dev/null
[root@server2 ~]# wget ftp://20.0.0.10  '匿名下载,下载文件名为index.html'

脚本测试:

1.记录在线用户并测试其是否开放21号端口

[root@client1 ~]# vi system.sh
#!/bin/bash
net="20.0.0."                                 '定义变量地址段'
file=/etc/ethers                              '定义变量记录文件位置'
[ -f /etc/ethers ] && cp -f $file $file.bak   '判断文件是否存在,存在备份'
add=1                                         '循环测试的起始变量'
while [ $add -le 20 ]                         '循环条件'
do                               
 ping -c 3 -i 0.2 -w 1 ${net}${add} &> /dev/null
 if [ $? -eq 0 ]
 then arp -n | grep ${net}${add} | awk '{print $1,$3}' >> $file   
 fi  //以数字形式显示
 let add++
done
[root@client1 ~]# chmod +x system.sh 
[root@client1 ~]# ./system.sh 
[root@client1 ~]# sort -u /etc/ethers  'sort -u 等同于uniq,表示相同的数据仅显示一行'

2.ftp在线测试

[root@client1 ~]# vi system.sh
#!/bin/bash
net="20.0.0."
file=/etc/ethers
[ -f /etc/ethers ] && cp -f $file $file.bak
add=1
while [ $add -le 20 ]
do
   ping -c 3 -i 0.2 -w 1 ${net}${add} &> /dev/null
   if [ $? -eq 0 ]
   then arp -n | grep ${net}${add} | awk '{print $1,$3}' >> $file
   fi
   let add++
done
sort -u $file >> /root/file1.txt
target=$(awk '{print $1}' /root/file1.txt)
for ip in $target
do
   wget ftp://$ip &> /dev/null         '匿名下载'
   if [ $? -eq 0 ]        '如果下载成功就执行后面的语句'
   then echo "$ip 主机ftp开启"              
   rm -rf index.html                '删除下载的文件,避免重复 '
   fi
done
[root@client1 ~]# chmod +x system.sh 
[root@client1 ~]# ./system.sh 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值