脚本示例
1.提取已建立的TCP连接
#!/bin/sh #Version:0.0.1 #Author:stone #Description:connection count declare -i established=0 declare -i listen=0 declare -i other=0 #提取netstat中状态 for i in $(netstat -ant |grep "tcp\>" |awk '{print $NF}'); do if [ "$i" == "ESTABLISHED" ]; then let established++ elif [ "$i" == "LISTEN" ]; then let listen++ else let other++ fi done echo "ESTABLISHED:$established" echo "LISTEN:$listen" echo "OTHER:$other" netstat -ant |grep "tcp\>" |awk '{print $NF}' |sort |uniq -c
2.比较大小
示例1: [root@localhost test]# cat num.sh #!/bin/bash #Author:tomcat for i in $@;do echo $i >> ./list.txt done sort -n ./list.txt mv ./list.txt /tmp 示例2: [root@localhost test]# cat t.sh #!/bin/bash #Author:tomcat a=$1 b=$2 c=$3 max=$a min=$b for i in $@;do [ $max -lt $i ] && max=$i done for i in $@;do [ $min -gt $i ] && min=$i done for i in $@;do [ $i -gt $min ] && [ $i -lt $max ] && mdl=$i done echo $min $mdl $max
3.匹配任意邮箱地址
#正则表达式包含扩展正则规则,所以用egrep命令进行匹配 [0-9a-zA-Z_]+@[0-9a-zA-Z_]+(\.[0-9a-zA-Z_]+){1,3} [root@localhost ~]# cat email tom@abc.net jerry@163.com tomcat@163 Time [root@localhost ~]# egrep "[0-9a-zA-Z_]+@[0-9a-zA-Z_]+(\.[0-9a-zA-Z_]+){1,3}" email tom@abc.net jerry@163.com
4.脚本自动ping指定的IP地址(把IP地址保存到指定的文件中),并统计包的丢包率
#把IP地址保存到文件/root/ip.txt中,就可随意修改需要探测的IP地址,而不用修改脚本程序 [root@localhost ~]# cat ip.txt 192.168.10.10 192.168.10.20 192.168.10.30 #脚本内容 [root@localhost ~]# cat ping.sh #!/bin/bash #Author:Tomcat echo "------此脚本会统计/root/ip.txt中所有IP地址的丢包率------" #脚本的作用 for i in $(cat /root/ip.txt) #ip.txt文件中有几个IP就会循环几次 do aa=$(ping -c 3 $i | grep ttl | wc -l) #把能够ping通的包数量赋予变量aa(如果有ttl关键字则代表ping通) bb=$(( 3 - $aa )) #通过减法算法不能ping通的包数量,并赋予变量bb cc=$(echo "$bb 3" | awk '{printf "%5.2f \n",$1/$2*100}') #计算变量bb的值和3相除之后的百分比 echo "$i 的丢包率是:$cc%" #输出丢出率 done #进行测试 [root@localhost ~]# bash ping.sh ------此脚本会统计/root/ip.txt中所有IP地址的丢包率------ 192.168.10.10 的丢包率是: 0.00 % 192.168.10.20 的丢包率是: 0.00 % 192.168.10.30 的丢包率是:100.00 % #30主机ping不通,所以丢包率是100%
5.清除/var/log下mesagess.bak 日志文件的简单命令脚本 #1.不是root执行不了 2.没有流程控制
cp -a /var/log/messages /var/log/messages.bak [root@localhost ~]# cat DelMess.sh #!/bin/bash #Author:tomcat cd /var/log cat /dev/null > messages.bak echo "Logs cleaded up."
6.包含命令,变量和流程控制语句的清除 /var/log 下 messages.bak 日志文件
#!/bin/bash LOG_DIR=/var/log ROOT_UID=0 #$UID为0的时候,用户才具有root用户的权限。要使用root用 户来运行 if [ "$UID" -ne "$ROOT_UID" ] then echo "Must be root to run this script." exit 1 fi cd $LOG_DIR &> /dev/null || { echo "Unable to switch to the necessary directory" exit 1 } cat /dev/null > messages && echo "Log cleanup successful." exit 0 #退出之前返回0表示成功,返回1表示失败
7.清空日志的三种方法
[root@localhost ~]# echo >test.log #在查看文件,会有空格 [root@localhost ~]# >test.log [root@localhost ~]# cat /dev/null > test.log #保留文件,清空内容

浙公网安备 33010602011771号