linux开启端口长连接,shell基础知识---与监听服务器长连接端口状态,shell基础知识...

本文介绍了Shell脚本的基础知识,包括变量定义、数组操作、命令执行和条件判断。重点讲解了如何使用Shell监控服务器的长连接端口状态,通过`netstat`命令获取端口信息。此外,还分享了条件测试表达式在if语句中的应用,以及针对端口状态的异常判断和告警机制。
摘要由CSDN通过智能技术生成

shell基础知识---与监听服务器长连接端口状态,shell基础知识

从未写过脚本我的最近接了俩脚本的需求,就在这分享一下我的我学到基础知识主要就四部分内容

4b7add0bef4d789d08c2561980939d3e.png

一、变量

变量的定义

string='字符串'

string="字符串"num=808

string=str

字符串可以用单引号和双引号包裹,也可不包裹。数字话不用引号包裹的话就是一个数值。

变量也可以用来接受语句给变量赋值

file=`ls -l filepath/txt.txt`

上面的语句是接收filepath 下的txt.txt文档

数组的定义

程序中常用的还有数组在 Shell 中,用括号( )来表示数组,数组元素之间用空格来分隔。由此,定义数组的一般形式为:

arrayName=(ele1 ele2 ele3 ... elen)

#定义方法

my_array=(A B "C" D)

数组的赋值方法有两种

一种是,对下标进行赋值、一种是对指定的元素赋值区别如下

#下标赋值

arrayName[0]=value0

arrayName[1]=value1

arrayName[2]=value2#特定元素赋值

ages=([3]=24 [5]=19 [10]=12)

注意:变量声明赋值时=与值之间不允许有空格

二、变量的使用

变量使用

使用一个定义过的变量,只要在变量名前面加美元符号$即可,如:

author="严长生"

echo$authorecho ${author}

变量名外面的花括号{ }是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。我个人建议是所有变量的使用是都加的{}

数组的使用

①数组的获取

myArray=(A B "C"D)echo "第一个元素为: ${myArray[0]}"

echo "第二个元素为: ${myArray[1]}"

7c7af57d9d1a0b81a5bc39f42c88ec25.png

执行结果如上

②获取数组中所有元素和长度

myArray=(a b c d)echo "数组元素个数为: ${#myArray[*]}"

echo "数组元素个数为: ${#myArray[@]}"

echo "数组的元素为: ${my_array[*]}"echo "数组的元素为: ${my_array[@]}"

03316a745c74b8f956252a306262dd71.png

③ 数组的遍历

1、for循环

1 for(( i=0;i

2 #${#array[@]}获取数组长度用于循环3 echo${array[i]};4 done;

2、for … in

#遍历(带数组下标):for i in "${!arr[@]}";doprintf"%s\t%s\n" "$i" "${arr[$i]}"

done#遍历(不带数组下标):for element in${array[@]}

#也可以写成for elementin ${array[*]}do

echo$elementdone

3、While循环法

1 i=0

2 while [ $i -lt ${#array[@]} ]3 #当变量(下标)小于数组长度时进入循环体4 do

5 echo${ array[$i] }6 #按下标打印数组元素7 let i++

8 done

四、命令执行

到这里你还记得我们的最初是想干啥的吗?监控长连接端口状态。

查看端口状态的命令  【更多解释查看菜鸟教程】

1 netstat [-acCeFghilMnNoprstuvVwx][-A][--ip]

f3fb7bb4bb1c544000980d47ac174ba8.png

知道如何获取端口状态我们就要用shell 来实现了。

命令用 `来包裹就是键盘上tab键上面那个键。我们来试试看

c1efe1aacef93ed6d264991cf917e266.png

这样我们就能拿到想要的端口信息了。

四、条件判断

条件测试的表达式:

[ expression ]  括号两端必须要有空格

[[ expression ]] 括号两端必须要有空格

组合测试条件:

-a: and

-o: or

判断比较一般在if中使用,if的使用如下

1 if 判断条件;then

2 #执行内容3 fi

我们可以判断大约有以下几几类

1、整数比较:

-eq 判断两个整数是否相等

-ne 判断两个整数是否不等

-gt 判断一个数是否大于另一个数

-lt 判断一个数是否小于另一个数

-ge 大于或等于

-le 小于或等于

2、字符串比较

== 等于  两边要有空格

!= 不等

>  大于

3、文件判断

-z      string 判断指定字符是否为空,空着真,非空为假

-n   string 判断指定字符串是否为不空,空为假 非空为真

-e   file 判断文件是否存在

-f       file 判断文件是否为普通文件

-d   file 判断指定路径是否为目录

-r    file 判断文件对当前用户是否可读

-w   file 判断文件对当前用户是否可写

-x   file 判断文件对当前用户是都可执行

-z    是否为空  为空则为真

-a    是否不空

五、最后的实现代码

我的实现思路如下

1、遍历获取所有要查询的端口号(我们的端口号在配置文件中)

2、在遍历中遍历查询配置文件中的端口状态为EASTBLISHEN是否存在

3、如果不存在的就说明这个端口异常,我这样判断原因因为可能起这个端口的服务挂了,我们查不到任何状态更别说判断了。我们只能取正常的了。

4、判断异常发送告警给运维

5、我并没对把所有的结果汇总到一起进行发送,因为端口和配置文件有点多,等结果会很慢而且可能把我自己查死了。所以变异异常直接就发了

代码明天我会贴出来。有问题欢迎评论区指正

参考:https://www.cnblogs.com/aaronLinux/p/7074725.html

参考:http://www.runoob.com/linux/linux-comm-netstat.html

http://www.dengb.com/Linuxjc/1339021.htmlwww.dengb.comtruehttp://www.dengb.com/Linuxjc/1339021.htmlTechArticleshell基础知识---与监听服务器长连接端口状态,shell基础知识 从未写过脚本我的最近接了俩脚本的需求,就在这分享一下我的我学到基础知...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值