首页 > 代码库 > 侦听服务端口
侦听服务端口
myport(){
for i
do
lsof -i:$i |tail -n +2 |tr -s ‘ ‘ |cut -d ‘ ‘ -f1,8 |sort |uniq >port
if [[ -s port ]]
then
while read ser pro
do
echo $ser is listening : $pro $i port
done<port
else
echo $i port is not listening
fi
done
}
myport $@
效果:
分析:
tail的使用 -n +2 是从第2行开始显示
tr(translate缩写)主要用于删除文件中的控制字符,或进行字符转换。
语法:tr [–c/d/s/t] [SET1] [SET2]
SET1: 字符集1
SET2:字符集2
-c:complement,用SET2替换SET1中没有包含的字符
-d:delete,删除SET1中所有的字符,不转换
-s: squeeze-repeats,压缩SET1中重复的字符
-t: truncate-set1,将SET1用SET2转换,一般缺省为-t去除重复的字符:tr -s set1
删除空白行
删除空白行就是删除换行符/n
注意:这些空白行上只有回车符,没有空格符
这里用换行符的转义字符\n
注意:用-s删除了多余的换行符,如果用-d,则会删除所有的换行符
cut的使用
cut命令主要是接受三个定位方法:
第一,字节(bytes),用选项-b
第二,字符(characters),用选项-c
第三,域(fields),用选项-f-b支持形如3-5的写法,而且多个定位之间用逗号隔开就成
但有一点要注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦
-3表示从第一个字节到第三个字节,而3-表示从第三个字节到行尾。如果你细心,你可以看到这两种情况下,都包括了第三个字节“c”。
如果我执行who|cut -b -3,3-,你觉得会如何呢?答案是输出整行,不会出现连续两个重叠的c的如果你观察过/etc/passwd文件,你会发现,它并不像who的输出信息那样具有固定格式,而是比较零散的排放。但是,冒号在这个文件的每一行中都起到了非常重要的作用,冒号用来隔开每一个项。
我们很幸运,cut命令提供了这样的提取方式,具体的说就是设置“间隔符”,再设置“提取第几个域”,就OK了!注意从文件里读取数据的使用
函数的使用
函数必须先定义再使用,这个错误一般不会出现
调用函数
调用已定义的函数,直接用函数名
可以向函数内传递参数(可以使用位置参数)示例:函数名 参数1 参数2 ...
运行脚本时写位置参数,调用函数时要用$@
本文出自 “爱武装一辈子” 博客,请务必保留此出处http://menglinux.blog.51cto.com/8733806/1440040
侦听服务端口