You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by db...@apache.org on 2016/02/02 02:35:38 UTC

[1/2] incubator-trafodion git commit: fix 1795: findPort.py may find some ports that are in CLOSE_WAIT state

Repository: incubator-trafodion
Updated Branches:
  refs/heads/master 9cc1e835f -> 4f8bbf7e5


fix 1795: findPort.py may find some ports that are in CLOSE_WAIT state


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/57a5527f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/57a5527f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/57a5527f

Branch: refs/heads/master
Commit: 57a5527f31fe36b708cb49cca00e25d89fbe762d
Parents: 7a63602
Author: Qifan Chen <qf...@adev04.esgyn.com>
Authored: Mon Feb 1 00:36:12 2016 +0000
Committer: Qifan Chen <qf...@adev04.esgyn.com>
Committed: Mon Feb 1 00:36:12 2016 +0000

----------------------------------------------------------------------
 core/sqf/sql/scripts/findPort.py |  40 +++++++++----
 core/sqf/sql/scripts/lsof.awk    | 110 ++++++++++++++++++++++++++++++++++
 2 files changed, 138 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/57a5527f/core/sqf/sql/scripts/findPort.py
----------------------------------------------------------------------
diff --git a/core/sqf/sql/scripts/findPort.py b/core/sqf/sql/scripts/findPort.py
index 6179a89..4d505f3 100644
--- a/core/sqf/sql/scripts/findPort.py
+++ b/core/sqf/sql/scripts/findPort.py
@@ -63,23 +63,39 @@ args = parser.parse_args()  # exits and prints help if args are incorrect
 
 exitCode = 0
 
-# get the set of lines to process ( netstat | grep localhost )
 
-p1 = subprocess.Popen(["netstat"], stdout=subprocess.PIPE)
-p2 = subprocess.Popen(["grep","localhost"], stdin=p1.stdout, stdout=subprocess.PIPE, close_fds=True)
-
-# process the lines, looking for port numbers
-
-pattern = r'localhost:(?P<portNumber>[0-9]{5})'
-matcher = re.compile(pattern)
+retcode = subprocess.call("sudo -ll lsof", shell=True) 
 
 inUseRanges = sets.Set()
 
-for line in p2.stdout: 
-    result = matcher.findall(line)
-    for occurrance in result:
-        rangeInUse = int(occurrance)/200
+if retcode == 0:
+    # sudo lsof can be run successfully
+    # get the ips in use to process ( sudo lsof -i | awk -f lsof.awk )
+    print "Use sudo lsof to get port numbers";
+    p1 = subprocess.Popen(["sudo", "lsof", "-i"], stdout=subprocess.PIPE)
+    p2 = subprocess.Popen(["awk", "-f", "lsof.awk"], stdin=p1.stdout, stdout=subprocess.PIPE, close_fds=True)
+
+    for ip in p2.stdout: 
+        rangeInUse = int(ip)/200
         inUseRanges.add(rangeInUse)
+else :
+    # no sudo permission on lsof 
+    # get the set of lines to process ( netstat | grep localhost )
+    print "Use netstat to get port numbers";
+    p1 = subprocess.Popen(["netstat"], stdout=subprocess.PIPE)
+    p2 = subprocess.Popen(["grep","localhost"], stdin=p1.stdout, stdout=subprocess.PIPE, close_fds=True)
+    
+    # process the lines, looking for port numbers
+    
+    pattern = r'localhost:(?P<portNumber>[0-9]{5})'
+    matcher = re.compile(pattern)
+    
+    
+    for line in p2.stdout: 
+        result = matcher.findall(line)
+        for occurrance in result:
+            rangeInUse = int(occurrance)/200
+            inUseRanges.add(rangeInUse)
 
 # avoid recommending low ranges; our lowest recommendation
 # will be the first unused range above the lowest in-use range

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/57a5527f/core/sqf/sql/scripts/lsof.awk
----------------------------------------------------------------------
diff --git a/core/sqf/sql/scripts/lsof.awk b/core/sqf/sql/scripts/lsof.awk
new file mode 100644
index 0000000..c42958f
--- /dev/null
+++ b/core/sqf/sql/scripts/lsof.awk
@@ -0,0 +1,110 @@
+# @@@ START COPYRIGHT @@@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# @@@ END COPYRIGHT @@@
+#
+##############################################################################
+#
+# An AWK script to find ports in the output of command lsof -i. 
+#
+##############################################################################
+#
+#
+#
+# For the following ouput, 
+# 
+# COMMAND     PID    USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
+# java        372 zellerh  325u  IPv6 539757798      0t0  TCP localhost:41761->localhost:eforward (ESTABLISHED)
+# java        372 zellerh  330u  IPv6 539758057      0t0  TCP *:4200 (LISTEN)
+# master     2354    root   12u  IPv4     38168      0t0  TCP localhost:smtp (LISTEN)
+# master     2354    root   13u  IPv6     38170      0t0  TCP localhost:smtp (LISTEN)
+# dhclient   4620    root    6u  IPv4   2628139      0t0  UDP *:bootpc
+# sshd      10514    root    3r  IPv4 574815707      0t0  TCP adev04.esgyn.com:ssh->cpe-24-27-32-126.austin.res.rr.com:59216 (ESTABLISHED)
+# sshd      10535     qfc    3u  IPv4 574815707      0t0  TCP adev04.esgyn.com:ssh->cpe-24-27-32-126.austin.res.rr.com:59216 (ESTABLISHED)
+# sshd      10714    root    3r  IPv4 574816896      0t0  TCP adev04.esgyn.com:ssh->cpe-24-27-32-126.austin.res.rr.com:59217 (ESTABLISHED)
+# sshd      10735     qfc    3u  IPv4 574816896      0t0  TCP adev04.esgyn.com:ssh->cpe-24-27-32-126.austin.res.rr.com:59217 (ESTABLISHED)
+# sshd      13507    root    3r  IPv4 569638562      0t0  TCP adev04.esgyn.com:ssh->76-244-44-66.lightspeed.sntcca.sbcglobal.net:55554 (ESTABLISHED)
+# sshd      13540 hegdean    3u  IPv4 569638562      0t0  TCP adev04.esgyn.com:ssh->76-244-44-66.lightspeed.sntcca.sbcglobal.net:55554 (ESTABLISHED)
+# python2.6 14346 hegdean    4u  IPv4 552343030      0t0  TCP adev04.esgyn.com:46083 (LISTEN)
+# Xvnc-core 15343     qfc    0u  IPv6 449977085      0t0  TCP *:6049 (LISTEN)
+# Xvnc-core 15343     qfc    1u  IPv4 449977086      0t0  TCP *:6049 (LISTEN)
+#
+#
+# the script will identify and print out following port numbers.
+#
+#41761
+#4200 
+#59216 
+#59216 
+#59217 
+#59217 
+#55554 
+#55554 
+#46083 
+#6049 
+#6049 
+
+
+
+# find port in string of form <do-not-care>:[0-9]{4,5}<do-not-care>
+function reportPort(val)
+{
+   parts = split(val, iparray ,":"); 
+
+   if ( parts > 1 ) {
+#      printf "%s\n", iparray[2]
+      # get the port number after ':'
+      ippos = match(iparray[2], "[0-9][0-9][0-9][0-9]*");
+      nonip_pos = match(iparray[2], "[^0-9]");
+
+      if ( ippos > 0 ) {
+        if ( nonip_pos > 0 )
+          ip=substr(iparray[2], ippos, nonip_pos - ippos + 1);
+        else
+          ip=substr(iparray[2], ippos);
+
+        printf "%s\n", ip;
+     }
+   }
+}
+
+{
+   x=split($0,a,"TCP"); 
+
+   # Identify <string-may-contain-ip> in string of form 
+   # <do-not-care>TCP<string-may-cpontain-ip>
+   if ( x > 1 ) {
+
+      #<string-may-cpontain-ip> may be one of the following two forms:
+      # <ip-string> -> <ip-string>, or
+      # <ip-string>
+      #
+      # <ip-string> is something like <do-not-care>:<port><do-not-care> 
+      # <port> is [0-9]{4,}
+      #
+      # check if exists ->
+      y = split(a[2],b,"->"); 
+
+      if (y>1) {
+        reportPort(b[1]);
+        reportPort(b[2]);
+      } else
+        reportPort(a[2]);
+   }
+}


[2/2] incubator-trafodion git commit: Merge [TRAFODION-1795] PR 297 Improved findPort.py

Posted by db...@apache.org.
Merge [TRAFODION-1795] PR 297 Improved findPort.py


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/4f8bbf7e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/4f8bbf7e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/4f8bbf7e

Branch: refs/heads/master
Commit: 4f8bbf7e5139214e8fbec4993945418aac429764
Parents: 9cc1e83 57a5527
Author: Dave Birdsall <db...@apache.org>
Authored: Tue Feb 2 01:34:56 2016 +0000
Committer: Dave Birdsall <db...@apache.org>
Committed: Tue Feb 2 01:34:56 2016 +0000

----------------------------------------------------------------------
 core/sqf/sql/scripts/findPort.py |  40 +++++++++----
 core/sqf/sql/scripts/lsof.awk    | 110 ++++++++++++++++++++++++++++++++++
 2 files changed, 138 insertions(+), 12 deletions(-)
----------------------------------------------------------------------