From ae0b5e5d142c03b2df544774aead9887d5610bf2 Mon Sep 17 00:00:00 2001 From: Daniil Baturin Date: Tue, 15 May 2018 02:55:13 +0200 Subject: T637: new op mode for traffic dumps based on tcpdump. --- Makefile | 1 + op-mode-definitions/traffic-dump.xml | 45 ++++++++++++++++++++++++++++ src/op-mode/vyos-list-dumpable-interfaces.py | 14 +++++++++ src/op-mode/vyos-list-interfaces.py | 8 +++++ 4 files changed, 68 insertions(+) create mode 100644 op-mode-definitions/traffic-dump.xml create mode 100755 src/op-mode/vyos-list-dumpable-interfaces.py create mode 100755 src/op-mode/vyos-list-interfaces.py diff --git a/Makefile b/Makefile index c328d6a8d..8a75a91e4 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,7 @@ op_mode_definitions: rm -f $(OP_TMPL_DIR)/show/dns/node.def rm -f $(OP_TMPL_DIR)/reset/node.def rm -f $(OP_TMPL_DIR)/restart/node.def + rm -f $(OP_TMPL_DIR)/monitor/node.def .PHONY: all all: interface_definitions op_mode_definitions diff --git a/op-mode-definitions/traffic-dump.xml b/op-mode-definitions/traffic-dump.xml new file mode 100644 index 000000000..be53f866b --- /dev/null +++ b/op-mode-definitions/traffic-dump.xml @@ -0,0 +1,45 @@ + + + + + + + Monitor traffic dumps + + + + tcpdump -i $4 + + Monitor traffic dump from an interface + + + + + + + tcpdump -n -i $4 $6 + + Monitor traffic matching filter conditions + + + + tcpdump -n -i $4 -w $6 + + Save traffic dump from an interface to a file + + + + tcpdump -n -i $4 -w $6 $8 + + Save a dump of traffic matching filter conditions to a file + + + + + + + + + + + diff --git a/src/op-mode/vyos-list-dumpable-interfaces.py b/src/op-mode/vyos-list-dumpable-interfaces.py new file mode 100755 index 000000000..53ee89633 --- /dev/null +++ b/src/op-mode/vyos-list-dumpable-interfaces.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 + +# Extract the list of interfaces available for traffic dumps from tcpdump -D + +import re +import subprocess + +if __name__ == '__main__': + out = subprocess.check_output(['/usr/sbin/tcpdump', '-D']).decode().strip() + out = out.split("\n") + + intfs = " ".join(map(lambda s: re.search(r'\d+\.(\S+)\s', s).group(1), out)) + + print(intfs) diff --git a/src/op-mode/vyos-list-interfaces.py b/src/op-mode/vyos-list-interfaces.py new file mode 100755 index 000000000..59c9dffad --- /dev/null +++ b/src/op-mode/vyos-list-interfaces.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 + +import netifaces + +if __name__ == '__main__': + interfaces = netifaces.interfaces() + + print(" ".join(interfaces)) -- cgit v1.2.3