Shell脚本项目实战解析

一、脚本编程步骤分享

1. 脚本编程步骤

  1. 需求分析
  2. 命令测试
  3. 脚本编程
  4. 测试调优

2. 步骤解析

  1. 需求分析
    根据系统管理的需求,分析脚本要实现的功能,功能实现的层次,实现的命令与语句等

  2. 命令测试
    . 将要用到的命令逐个进行测试,以决定使用的选项,要设置的变量等

3.脚本编程
3. 将测试好的命令写入到脚本文件中,并通过各种语句将命令执行的结果保存,判断或者发出报警等

4.调试优化

  1. 对脚本进行测试,并根据结果进行优化
  2. 建议一边编程一边调试,以减少错误的发生

二 项目实战

1.MAC记录与端口扫描脚本

  1. 企业环境说明

    1. 随着业务的不断发展,某公司所使用的Linux服务器也越来越多。在系统管理和维护过程中,经常需要编写一些实用的小脚本,以辅助运维工作,通过工作效率
  2. 需求描述

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

    [root@server1 ~]# ping -c 3 -i 0.2 -W 3 20.0.0.11 > a.txt
    [root@server1 ~]# cat a.txt
    [root@server1 ~]# arping -c 3 -I ens33 -w 3 20.0.0.11 > a.txt
    [root@server1 ~]# cat a.txt
    [root@server1 ~]# arping -c 1 -I ens33 -w 3 20.0.0.11 > a.txt
    [root@server1 ~]# cat a.txt
    

-c:连接次数
-i:时间间隔
-I:使用网卡
-w:超时时间
在这里插入图片描述

[root@server1 ~]# awk '{print $4,$5}' a.txt > b.txt
[root@server1 ~]# cat b.txt

在这里插入图片描述

两个主机安装ftp,查看21端口状态

[root@server1 ~]# yum -y install vsftpd
[root@server1 ~]# systemctl start vsftpd
[root@server1 ~]# netstat -anpt | grep 21

在这里插入图片描述

 [root@server2 ~]# yum -y install vsftpd    
 [root@server2 ~]# systemctl start vsftpd
 [root@server2 ~]# netstat -napt | grep 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

在这里插入图片描述

选择一台新的进行shell脚本测试
1.进行记录在线用户并测试其是否开放21号端口

[root@client1 ~]# vi system.sh
[root@client1 ~]# chmod +x system.sh 
[root@client1 ~]# ./system.sh 
[root@client1 ~]# sort -u /etc/ethers   
sort -u:等同于uniq,表示相同的数据仅显示一行

在这里插入图片描述

 #!/bin/bash
# 记录在线用户并测试其是否开放21号端口
net="20.0.0."                                 
file=/etc/ethers                              
[ -f /etc/ethers ] && cp -f $file $file.bak   
add=1                                         
while [ $add -le 20 ]                         
do                               20.0.0.   1
   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

在这里插入图片描述
2.进行ftp在线测试

[root@client1 ~]# vi system.sh
[root@client1 ~]# chmod +x system.sh 
[root@client1 ~]# ./system.sh 

在这里插入图片描述

#!/bin/bash
# 记录在线用户并测试其是否开放21号端口
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
     if [ $? -eq 0 ]                                      如果下载成功
    then echo "$ip 主机ftp开启"              
     rm -rf index.html                       删除下载的文件。因为每次测试下载的都是它  
   fi
done

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值