热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LinuxShell脚本测试案例(三)

脚本1:编写一个名为getarp.sh的脚本,记录局域网中各个主机的MAC地址。保存到etcether文件中,若此文件已存在,

脚本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地址

080453340.jpg

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,内容如下:

080502549.jpg

这里采用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 :" date

read-p "input password:" password

a&#61;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&#61;&#96;expr$a &#43; 1&#96;

done

fi

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

3、执行脚本myuadd.sh&#xff0c;添加用户

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

批量删除用户脚本&#xff1a;

1、批量删除用户脚本myudel.sh内容如下&#xff1a;

#!/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&#61;&#96;grep"$1" /etc/passwd | cut -d ":" -f 1 | grep -v"root"&#96;

foru in $tobedel

do

 userdel -r $u &> /dev/null

done

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

3、执行脚本myudel.sh&#xff0c;删除用户。如myudel.shcaiwu03myudel.sh caiwu

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


附&#xff1a;

我们可以用envexport命令查看环境变量&#xff0c;使用set命令查看所有变量&#xff08;包括环境变量和自定义变量&#xff09;&#xff0c;使用unset命令删除变量

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

080522891.jpg

080548680.jpg


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



推荐阅读
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
author-avatar
paalanjorrisch_270
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有