Linux Shell脚本测试案例(三)

简介:

脚本1:编写一个名为getarp.sh的脚本,记录局域网中各个主机的MAC地址。保存到/etc/ether文件中,若此文件已存在,应先进行备份。第行一条记录,第1列为IP地址,第2列为对应的MAC地址。

分析:

假定要扫描的网段是192.168.4.0,将192.168.4.赋值给变量NADD,作为检测地址的前缀

使用”arping  -c 2 -w 1 被检测主机的IP”命令发送ARP请求,记录MAC地址

while循环语句检测目标主并记录MAC地址,这里检测的主机地址为2~3

1、vi创建一个名为getarp.sh脚本,内容如下:

#!/bin/bash

NADD="192.168.4."

FILE="/etc/ethers"

[-f $FILE ] && /bin/cp -f $FILE $FILE.old

HADD=1

while[ $HADD -lt 4 ]

do

 arping -c 2 -w 1 ${NADD}${HADD} &>/dev/null

 if [ $? -eq 0 ] ; then

    arp -n | grep ${NADD}${HADD} | awk '{print$1,$3}' >> $FILE

fi

 let HADD++

done

2、给脚本getarp.sh增加x权限

3、执行脚本,查看检测到的MAC信息


脚本2:编写一个脚本scanhost.sh,检查有哪些主机开启了匿名FPT服务,扫描对象为/etc/ethers文件中的所有IP地址,扫描的端口号为21

环境描述:假定192.168.4.2主机为匿名访问的FTP 192.168.4.3非匿名访部的FTP

创建扫描文件/etc/ethers,内容如下:

这里采用wget下载工具:wget ftp://IP/

1、用vi创建一个名为scanhost.sh脚本,内容如下:

#!/bin/bash

TARGET=$(awk'{print $1}' /etc/ethers)

echo"follow is anonymous FTP server:"

forIP in $TARGET

do

 wget T 3  -t 3 ftp://$IP/ &> /dev/null

if [ $? -eq 0 ] ; then

    echo $IP

 fi

done


参数提示:-T 连接超时时间;-t 连接重试次数


2、给脚本getarp.sh增加x权限

3、执行脚本,查看扫描到的信息


脚本3:计算/etc/目录中所有*.conf配置文件所占用的总空间大小

vi创建一个名为confsize.sh脚本,内容如下:

#!/bin/bash

sizenums=$(ls-l $(find /etc/ -type f -a -name *.conf) | awk '{print $5}')

total=0

fori in $sizenums

do

 total=$(expr $total + $i)

done

echo"total size of conf files: $total bytes."


脚本4:编写一个脚本chkfileown.sh,对于使用bash作为登录shell的系统中,检查他们在/opt目录中的文件数量并列出具体的数值及对应的用户账户

1、用vi创建一个名为chkfileown.sh脚本,内容如下:

#!/bin/bash

DIR="/opt/"

validusers=$(grep"bash$" /etc/passwd | awk -F: '{print $1}')

forusername in $validusers

do

 num=$(find $DIR -user $username | wc -l)

 echo "$username have $num files."

done

2、给脚本getarp.sh增加x权限

3、执行脚本,查看执行后的信息(注:/opt目录下若没有任何文件,可事先创建一些测试文件)

脚本5:编写脚本用于批量添加用户,要求如下:

要求提供交互功能,当管理员执行该脚本时,可以根据提示指定需添加的用户数量(少于100)、用户名前缀、并能够设置这些用户账户的失效时间,初始密码。

用户名编号统一使用两位数,如使用”01””02””03”的形式,而不是”1””2””3”的形式。

编写对应的批量删节除用户脚本,要能够通过命令行参数指定用户名前缀,执行脚本后删除所有使用了该前缀的用户账户,但要防止删除root用户。

批量添加用户脚本:

1、批量添加用户脚本myuadd.sh内容如下:

#!/bin/bash

read-p "input nu <1-99>:" nu

read-p "input name:" name

read-p "input date <YYYY-MM-DD>:" date

read-p "input password:" password

a=1

if[ $nu -lt 100 ]

then

while[ $a -le $nu ]

 do

   if [ $a -lt 10 ]

   then

         useradd -e $date"$name"0"$a"

         echo "$password" | passwd--stdin "$name"0"$a" &>/dev/null

   else

         useradd -e $date"$name""$a"

echo "$password" | passwd--stdin "$name""$a" &>/dev/null

   fi

   a=`expr$a + 1`

done

fi

2、给脚本myuadd.sh增加x权限

3、执行脚本myuadd.sh,添加用户

4、验证结果:查看/etc/passwd文件是否添了新用户

批量删除用户脚本:

1、批量删除用户脚本myudel.sh内容如下:

#!/bin/bash

if[ $# -le 0 ] ; then

 echo "error:the prefix of users has notbe specified."

 echo "usage:$0 nameprefix"

 exit 1

fi

tarjcvf /root/users.cnf.tar.gz /etc/passwd /etc/shadow /etc/group &>/dev/null

tobedel=`grep"$1" /etc/passwd | cut -d ":" -f 1 | grep -v"root"`

foru in $tobedel

do

 userdel -r $u &> /dev/null

done

2、给脚本myudel.sh增加x权限

3、执行脚本myudel.sh,删除用户。如myudel.shcaiwu03myudel.sh caiwu

4、验证结果:查看/etc/passwd文件中已删除的用户是否还存在。


附:

我们可以用envexport命令查看环境变量,使用set命令查看所有变量(包括环境变量和自定义变量),使用unset命令删除变量

LINUX系统中大多数版本都有随机数生成器,就是/dev/random文件。可以通过这个随机数文件相关的系统环境变量$RANDOM来随机取得随机数。在BASH环境下,这个RANDOM变量的内容介于0——32767之间,(man bash搜索 RANDOM 可以看到说明)所以,只要echo $RANDOM时,系统就会主动随机取出一个介于0——32767的数值。例如要想09之间的随机数时,可以用declare声明数值类型


本文转自甘兵 51CTO博客,原文链接:http://blog.51cto.com/ganbing/1227663,如需转载请自行联系原作者

相关文章
|
3月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
424 9
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
301 0
Linux系统初始化脚本
|
3月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
317 2
|
3月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
11月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
6月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
987 23
|
8月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
1096 24
|
8月前
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
331 2
|
10月前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
700 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
10月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
507 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡