TCPDUMP的shell小脚本

代码在下面

具体思路如下:

用户会输入指令,如网卡(ens33),数量(300)等

我们需要输出提示:如请输入网卡名,请输入数量等

指令需要和选项结合在一起,如网卡前面要加-i,数量前面要加-c等

所以,创建func数组,搜集用户输入的指令

创建prompt数组,输入我们要给出的提示

创建option数组,输入用户指令前面的选项

创建常数conditionnum,设置为我们要写入的条件个数

最后创建FUNC数组,目的时把func和option结合在一起

创建循环,设置i=0,当i小于conditionnum时,进入循环,每次循环将用户输入指令读入到func中,并且i++,设置判断。当i=-1时跳出循环,这样,如果func读入到了-1或者循环次数到了conditionnum,就会停止循环

创建第二次循环,目的是为了将option中的各项和func中各项组合形成FUNC,循环中判断,只有当func不为空时,func才会和option组合,否则不组合,当func=-1或者循环次数到了conditionnum时,停止循环

之后tcpdump跟上FUNC就可以完成指令

###############################################################
# 这是一个tcpdump的脚本
# 其中,各个数组作用如下
# func:用户输入的参数
# prompt:给用户的提示
# option:各个参数前面的选项
# FUNC:最后所执行的选项,也就是func和option的组合
# conditionnum:条件个数
# 如果要想添加额外条件,你需要做以下步骤
# 1、加几个条件,对应的conditionnum就加几
# 2、option加上前面相应的参数,注意后面要加上一个空格
# 3、prompt加上相应提示
###############################################################
echo 欢迎光~~~~~~~临
echo 按-1结束之后的条件,不想设置的条件按Enter
conditionnum=7
func=()
FUNC=()
options=('-i ' '-w ' '-b ' '-Q ' '-c ' '' 'port ')
prompt=('请输入网卡名' ‘请输入文件名’ ‘是否arp(是填arp,否不填)’ ‘流入包还是流出包(in入,out出,inout全部)’ ‘抓多少个包’ ‘指定协议’ ‘指定端口’)

i=0
for((; i<$conditionnum ;i++))
do
echo ${prompt[i]}
read func[i]
        if [ "${func[i]}" == "-1" ]
        then
        break
        fi
done

j=0
for((; `expr "${func[j]}" != "-1"` && j < $conditionnum ;j++))
do
        if [ "${func[j]}" == '' ]
        then
                l=1
        else
                FUNC[j]=${options[j]}${func[j]}
        fi
done

tcpdump ${FUNC[0]} ${FUNC[1]} ${FUNC[2]} ${FUNC[3]} ${FUNC[4]} ${FUNC[5]} ${FUNC[6]}

#如果要想添加额外条件,需要做以下步骤
1、加几个条件,对应的conditionnum就加几
2、option加上前面相应的参数,注意后面要加上一个空格
3、prompt加上相应提示

其余代码段都不用改

扩展思路:

加回显:设置纠错数组,将用户输入与纠错数组比对,若不对,则显示输入错误并且i--

扫描网卡:ifconfig | grep “ens”,但是目前不知道怎么去掉后面那一串

你可能感兴趣的:(tcpdump,golang,测试工具,centos)