小编skr*_*mit的帖子

如何在后台运行tshark命令并使用python中的子进程退出它

我想使用tsharkWireshark的命令行风格进行数据包捕获,同时连接到telnet上的远程主机设备.我想调用我为捕获编写的函数:

def wire_cap(ip1,ip2,op_fold,file_name,duration):  # invoke tshark to capture traffic during session
    if duration == 0:
        cmd='"tshark" -i 1 -P -w '+ op_fold+file_name+'.pcap src ' + str(ip1) + ' or src '+ str(ip2)
    else:
        cmd='"tshark" -i 1 -a duration:'+str(duration)+' -P -w '+ op_fold+file_name+'.pcap src ' + str(ip1) + ' or src '+ str(ip2)

    p = subprocess.Popen(cmd, shell=True,stderr=subprocess.PIPE)
    while True:
        out = p.stderr.read(1)
        if out == '' and p.poll() != None:
            break
        if out != '':
            sys.stdout.write(out)
            sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

出于调试目的,我想在后台运行此函数,并在需要时调用它,并在我获取捕获时停止它.就像是:

Start …
Run Code Online (Sandbox Code Playgroud)

multithreading subprocess background-process python-2.7 tshark

5
推荐指数
1
解决办法
578
查看次数

Shell脚本(如果未评估条件以显示用户的帮助信息)

我编写了一个帮助菜单,以供参考shell脚本的使用 my_script.sh

echo $'\n\n'
echo $(printf '=%.0s' {1..100})
printf ' %.0s' {1..40}
echo "Welcome"
echo $(printf '=%.0s' {1..100})
echo $'\n'

arg=$1
echo "Input : $arg"
echo

if [[ arg -eq "-h" ]] || [[ arg -eq "-H" ]] || [[ arg -eq "-help" ]] || [[ arg -eq "-Help" ]] || [[ arg -eq "--h" ]] || [[ arg -eq "--H" ]] || [[ arg -eq "--help" ]] || [[ arg -eq "--Help" ]]; then
    echo "Help menu requested...."
    echo …
Run Code Online (Sandbox Code Playgroud)

linux bash shell

0
推荐指数
1
解决办法
83
查看次数