summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohit Mehta <mohit.mehta@vyatta.com>2008-06-22 18:21:56 +0000
committerMohit Mehta <mohit.mehta@vyatta.com>2008-06-22 18:21:56 +0000
commite29735e051da7520869b91a4324b9695d9656cfc (patch)
tree3d3047d1cb1bf050504a6047a835894a94e41e13
parent1279d97cb4fc07c542a15a334fa19df03d20204b (diff)
downloadvyatta-op-e29735e051da7520869b91a4324b9695d9656cfc.tar.gz
vyatta-op-e29735e051da7520869b91a4324b9695d9656cfc.zip
Fix Bug 1059 Feature Request: integrate 'tcpdump' and 'tethereal' into Vyatta CLI
added operational mode traffic capture for bridge, ethernet vifs and loopback interfaces Also, added code to validate the the user input for interface to be tsharked
-rw-r--r--scripts/vyatta-tshark-interface-port.pl36
-rw-r--r--templates/show/interfaces/bridge/node.tag/capture/node.def2
-rw-r--r--templates/show/interfaces/bridge/node.tag/capture/not/node.def1
-rw-r--r--templates/show/interfaces/bridge/node.tag/capture/not/port/node.def1
-rw-r--r--templates/show/interfaces/bridge/node.tag/capture/not/port/node.tag/node.def4
-rw-r--r--templates/show/interfaces/bridge/node.tag/capture/port/node.def1
-rw-r--r--templates/show/interfaces/bridge/node.tag/capture/port/node.tag/node.def3
-rw-r--r--templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/node.def2
-rw-r--r--templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/node.def1
-rw-r--r--templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/port/node.def1
-rw-r--r--templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/port/node.tag/node.def3
-rw-r--r--templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/port/node.def1
-rw-r--r--templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/port/node.tag/node.def3
-rw-r--r--templates/show/interfaces/loopback/node.tag/capture/node.def2
-rw-r--r--templates/show/interfaces/loopback/node.tag/capture/not/node.def1
-rw-r--r--templates/show/interfaces/loopback/node.tag/capture/not/port/node.def1
-rw-r--r--templates/show/interfaces/loopback/node.tag/capture/not/port/node.tag/node.def3
-rw-r--r--templates/show/interfaces/loopback/node.tag/capture/port/node.def1
-rw-r--r--templates/show/interfaces/loopback/node.tag/capture/port/node.tag/node.def3
19 files changed, 67 insertions, 3 deletions
diff --git a/scripts/vyatta-tshark-interface-port.pl b/scripts/vyatta-tshark-interface-port.pl
index 4eff322..aa750e5 100644
--- a/scripts/vyatta-tshark-interface-port.pl
+++ b/scripts/vyatta-tshark-interface-port.pl
@@ -28,12 +28,39 @@ use lib "/opt/vyatta/share/perl5/";
use strict;
use warnings;
+sub check_if_interface_is_tsharkable {
+ my $interface = shift;
+
+ my @grep_tshark_interfaces = `sudo /usr/bin/tshark -D | grep $interface`;
+ my $any_interface;
+
+ for my $count (0 .. $#grep_tshark_interfaces) {
+ my @temp = split(/ /,$grep_tshark_interfaces[$count]);
+ chomp $temp[1];
+ $grep_tshark_interfaces[$count] = $temp[1];
+ }
+
+ my $exact_match = 0;
+ for my $count (0 .. $#grep_tshark_interfaces) {
+ if ($grep_tshark_interfaces[$count] eq $interface) {
+ $exact_match = 1;
+ $any_interface = $grep_tshark_interfaces[$count];
+ }
+ }
+ if ($exact_match == 0 || $any_interface eq 'any') {
+ print "Unable to capture traffic on $interface\n";
+ exit 1;
+ }
+}
+
#
# main
#
my $intf = $ARGV[0];
+check_if_interface_is_tsharkable($intf);
+
if ($#ARGV > 0){
my $port = $ARGV[1];
my $not_port = $ARGV[2];
@@ -43,9 +70,11 @@ if ($#ARGV > 0){
} else {
if (($port > 0) and ($port < 65536)){
if ($not_port == 0){
- exec "sudo /usr/bin/tshark -n -i $intf port $port";
+ print "Capturing traffic on $intf port $port ...\n";
+ exec "sudo /usr/bin/tshark -n -i $intf port $port 2> /dev/null";
} else {
- exec "sudo /usr/bin/tshark -n -i $intf not port $port";
+ print "Capturing traffic on $intf excluding port $port ...\n";
+ exec "sudo /usr/bin/tshark -n -i $intf not port $port 2> /dev/null";
}
} else {
print "Invalid port number. Allowed values: <1-65535>\n";
@@ -54,7 +83,8 @@ if ($#ARGV > 0){
}
} else {
- exec "sudo /usr/bin/tshark -n -i $intf";
+ print "Capturing traffic on $intf ...\n";
+ exec "sudo /usr/bin/tshark -n -i $intf 2> /dev/null";
}
exit 0;
diff --git a/templates/show/interfaces/bridge/node.tag/capture/node.def b/templates/show/interfaces/bridge/node.tag/capture/node.def
new file mode 100644
index 0000000..ef86b9c
--- /dev/null
+++ b/templates/show/interfaces/bridge/node.tag/capture/node.def
@@ -0,0 +1,2 @@
+help: Show captured traffic on specified bridge interface
+run: /opt/vyatta/bin/vyatta-tshark-interface-port.pl "$4"
diff --git a/templates/show/interfaces/bridge/node.tag/capture/not/node.def b/templates/show/interfaces/bridge/node.tag/capture/not/node.def
new file mode 100644
index 0000000..ecae454
--- /dev/null
+++ b/templates/show/interfaces/bridge/node.tag/capture/not/node.def
@@ -0,0 +1 @@
+help: Show captured traffic excluding the specified bridge interface port
diff --git a/templates/show/interfaces/bridge/node.tag/capture/not/port/node.def b/templates/show/interfaces/bridge/node.tag/capture/not/port/node.def
new file mode 100644
index 0000000..ecae454
--- /dev/null
+++ b/templates/show/interfaces/bridge/node.tag/capture/not/port/node.def
@@ -0,0 +1 @@
+help: Show captured traffic excluding the specified bridge interface port
diff --git a/templates/show/interfaces/bridge/node.tag/capture/not/port/node.tag/node.def b/templates/show/interfaces/bridge/node.tag/capture/not/port/node.tag/node.def
new file mode 100644
index 0000000..271106c
--- /dev/null
+++ b/templates/show/interfaces/bridge/node.tag/capture/not/port/node.tag/node.def
@@ -0,0 +1,4 @@
+help: Show captured traffic excluding the specified bridge interface port
+run: /opt/vyatta/bin/vyatta-tshark-interface-port.pl "$4" "$8" 1
+allowed: echo -n '<1-65535>'
+
diff --git a/templates/show/interfaces/bridge/node.tag/capture/port/node.def b/templates/show/interfaces/bridge/node.tag/capture/port/node.def
new file mode 100644
index 0000000..43d1b9c
--- /dev/null
+++ b/templates/show/interfaces/bridge/node.tag/capture/port/node.def
@@ -0,0 +1 @@
+help: Show captured traffic on specified bridge interface port
diff --git a/templates/show/interfaces/bridge/node.tag/capture/port/node.tag/node.def b/templates/show/interfaces/bridge/node.tag/capture/port/node.tag/node.def
new file mode 100644
index 0000000..7ad54b7
--- /dev/null
+++ b/templates/show/interfaces/bridge/node.tag/capture/port/node.tag/node.def
@@ -0,0 +1,3 @@
+help: Show captured traffic on specified bridge interface port
+run: /opt/vyatta/bin/vyatta-tshark-interface-port.pl "$4" "$7" 0
+allowed: echo -n '<1-65535>'
diff --git a/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/node.def b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/node.def
new file mode 100644
index 0000000..190fd2f
--- /dev/null
+++ b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/node.def
@@ -0,0 +1,2 @@
+help: Show captured traffic on specified ethernet virtual interface
+run: /opt/vyatta/bin/vyatta-tshark-interface-port.pl "$4.$6"
diff --git a/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/node.def b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/node.def
new file mode 100644
index 0000000..7328773
--- /dev/null
+++ b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/node.def
@@ -0,0 +1 @@
+help: Show captured traffic excluding the specified ethernet virtual interface port
diff --git a/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/port/node.def b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/port/node.def
new file mode 100644
index 0000000..7328773
--- /dev/null
+++ b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/port/node.def
@@ -0,0 +1 @@
+help: Show captured traffic excluding the specified ethernet virtual interface port
diff --git a/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/port/node.tag/node.def b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/port/node.tag/node.def
new file mode 100644
index 0000000..258c6dc
--- /dev/null
+++ b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/not/port/node.tag/node.def
@@ -0,0 +1,3 @@
+help: Show captured traffic excluding the specified ethernet interface port
+run: /opt/vyatta/bin/vyatta-tshark-interface-port.pl "$4.$6" "${10}" 1
+allowed: echo -n '<1-65535>'
diff --git a/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/port/node.def b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/port/node.def
new file mode 100644
index 0000000..d61d229
--- /dev/null
+++ b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/port/node.def
@@ -0,0 +1 @@
+help: Show captured traffic on specified ethernet virtual interface port
diff --git a/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/port/node.tag/node.def b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/port/node.tag/node.def
new file mode 100644
index 0000000..4090508
--- /dev/null
+++ b/templates/show/interfaces/ethernet/node.tag/vif/node.tag/capture/port/node.tag/node.def
@@ -0,0 +1,3 @@
+help: Show captured traffic on specified ethernet virtual interface port
+run: /opt/vyatta/bin/vyatta-tshark-interface-port.pl "$4.$6" "$9" 0
+allowed: echo -n '<1-65535>'
diff --git a/templates/show/interfaces/loopback/node.tag/capture/node.def b/templates/show/interfaces/loopback/node.tag/capture/node.def
new file mode 100644
index 0000000..231ea09
--- /dev/null
+++ b/templates/show/interfaces/loopback/node.tag/capture/node.def
@@ -0,0 +1,2 @@
+help: Show captured traffic on loopback interface
+run: /opt/vyatta/bin/vyatta-tshark-interface-port.pl "$4"
diff --git a/templates/show/interfaces/loopback/node.tag/capture/not/node.def b/templates/show/interfaces/loopback/node.tag/capture/not/node.def
new file mode 100644
index 0000000..b5bd2e6
--- /dev/null
+++ b/templates/show/interfaces/loopback/node.tag/capture/not/node.def
@@ -0,0 +1 @@
+help: Show captured traffic excluding loopback interface port
diff --git a/templates/show/interfaces/loopback/node.tag/capture/not/port/node.def b/templates/show/interfaces/loopback/node.tag/capture/not/port/node.def
new file mode 100644
index 0000000..b5bd2e6
--- /dev/null
+++ b/templates/show/interfaces/loopback/node.tag/capture/not/port/node.def
@@ -0,0 +1 @@
+help: Show captured traffic excluding loopback interface port
diff --git a/templates/show/interfaces/loopback/node.tag/capture/not/port/node.tag/node.def b/templates/show/interfaces/loopback/node.tag/capture/not/port/node.tag/node.def
new file mode 100644
index 0000000..b8d8ff2
--- /dev/null
+++ b/templates/show/interfaces/loopback/node.tag/capture/not/port/node.tag/node.def
@@ -0,0 +1,3 @@
+help: Show captured traffic excluding loopback interface port
+run: /opt/vyatta/bin/vyatta-tshark-interface-port.pl "$4" "$8" 1
+allowed: echo -n '<1-65535>'
diff --git a/templates/show/interfaces/loopback/node.tag/capture/port/node.def b/templates/show/interfaces/loopback/node.tag/capture/port/node.def
new file mode 100644
index 0000000..e46cf42
--- /dev/null
+++ b/templates/show/interfaces/loopback/node.tag/capture/port/node.def
@@ -0,0 +1 @@
+help: Show captured traffic on loopback interface port
diff --git a/templates/show/interfaces/loopback/node.tag/capture/port/node.tag/node.def b/templates/show/interfaces/loopback/node.tag/capture/port/node.tag/node.def
new file mode 100644
index 0000000..f1aedc4
--- /dev/null
+++ b/templates/show/interfaces/loopback/node.tag/capture/port/node.tag/node.def
@@ -0,0 +1,3 @@
+help: Show captured traffic on specified ethernet interface port
+run: /opt/vyatta/bin/vyatta-tshark-interface-port.pl "$4" "$7" 0
+allowed: echo -n '<1-65535>'