<p>Vadim Yanitskiy has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12189">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trx_toolkit/ctrl_cmd.py: migrate from getopt to argparse<br><br>Change-Id: Ib9bf5ed7384c4f34478975cefe03880eb2fc8069<br>---<br>M src/target/trx_toolkit/ctrl_cmd.py<br>1 file changed, 25 insertions(+), 57 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/89/12189/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/target/trx_toolkit/ctrl_cmd.py b/src/target/trx_toolkit/ctrl_cmd.py</span><br><span>index ec683be..43b24a3 100755</span><br><span>--- a/src/target/trx_toolkit/ctrl_cmd.py</span><br><span>+++ b/src/target/trx_toolkit/ctrl_cmd.py</span><br><span>@@ -28,23 +28,16 @@</span><br><span> </span><br><span> import logging as log</span><br><span> import signal</span><br><span style="color: hsl(0, 100%, 40%);">-import getopt</span><br><span style="color: hsl(120, 100%, 40%);">+import argparse</span><br><span> import select</span><br><span> import sys</span><br><span> </span><br><span> from udp_link import UDPLink</span><br><span> </span><br><span> class Application:</span><br><span style="color: hsl(0, 100%, 40%);">-      # Application variables</span><br><span style="color: hsl(0, 100%, 40%);">- remote_addr = "127.0.0.1"</span><br><span style="color: hsl(0, 100%, 40%);">-     bind_addr = "0.0.0.0"</span><br><span style="color: hsl(0, 100%, 40%);">- base_port = 5700</span><br><span style="color: hsl(0, 100%, 40%);">-        bind_port = 0</span><br><span style="color: hsl(0, 100%, 40%);">-   fuzzing = False</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      def __init__(self):</span><br><span>          print_copyright(CR_HOLDERS)</span><br><span style="color: hsl(0, 100%, 40%);">-             self.parse_argv()</span><br><span style="color: hsl(120, 100%, 40%);">+             self.argv = self.parse_argv()</span><br><span> </span><br><span>            # Set up signal handlers</span><br><span>             signal.signal(signal.SIGINT, self.sig_handler)</span><br><span>@@ -54,61 +47,36 @@</span><br><span>                         format = "[%(levelname)s] %(filename)s:%(lineno)d %(message)s")</span><br><span> </span><br><span>                # Init UDP connection</span><br><span style="color: hsl(0, 100%, 40%);">-           self.ctrl_link = UDPLink(self.remote_addr, self.base_port + 1,</span><br><span style="color: hsl(0, 100%, 40%);">-                  self.bind_addr, self.bind_port)</span><br><span style="color: hsl(120, 100%, 40%);">+               self.ctrl_link = UDPLink(</span><br><span style="color: hsl(120, 100%, 40%);">+                     self.argv.remote_addr, self.argv.base_port + 1,</span><br><span style="color: hsl(120, 100%, 40%);">+                       self.argv.bind_addr, self.argv.bind_port)</span><br><span> </span><br><span>                # Debug print</span><br><span>                log.info("Init CTRL interface (%s)" \</span><br><span>                      % self.ctrl_link.desc_link())</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       def print_help(self, msg = None):</span><br><span style="color: hsl(0, 100%, 40%);">-               s  = " Usage: " + sys.argv[0] + " [options]\n\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                   " Some help...\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                   "  -h --help           this text\n\n"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-                s += " TRX interface specific\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -r --remote-addr    Set remote address (default %s)\n"   \</span><br><span style="color: hsl(0, 100%, 40%);">-                         "  -p --base-port      Set base port number (default %d)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                         "  -P --bind-port      Set local port number (default: random)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                   "  -b --bind-addr      Set local address (default %s)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                    "  -f --fuzzing        Send raw payloads (without CMD)\n"   \</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-                print(s % (self.remote_addr, self.base_port, self.bind_addr))</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-           if msg is not None:</span><br><span style="color: hsl(0, 100%, 40%);">-                     print(msg)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>   def parse_argv(self):</span><br><span style="color: hsl(0, 100%, 40%);">-           try:</span><br><span style="color: hsl(0, 100%, 40%);">-                    opts, args = getopt.getopt(sys.argv[1:],</span><br><span style="color: hsl(0, 100%, 40%);">-                                "r:p:P:b:fh",</span><br><span style="color: hsl(0, 100%, 40%);">-                         [</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "help",</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "fuzzing",</span><br><span style="color: hsl(0, 100%, 40%);">-                                    "base-port=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                 "bind-port=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                 "bind-addr=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                 "remote-addr=",</span><br><span style="color: hsl(0, 100%, 40%);">-                               ])</span><br><span style="color: hsl(0, 100%, 40%);">-              except getopt.GetoptError as err:</span><br><span style="color: hsl(0, 100%, 40%);">-                       self.print_help("[!] " + str(err))</span><br><span style="color: hsl(0, 100%, 40%);">-                    sys.exit(2)</span><br><span style="color: hsl(120, 100%, 40%);">+           parser = argparse.ArgumentParser(prog = "ctrl_cmd",</span><br><span style="color: hsl(120, 100%, 40%);">+                 description = "Auxiliary tool to send control commands")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-          for o, v in opts:</span><br><span style="color: hsl(0, 100%, 40%);">-                       if o in ("-h", "--help"):</span><br><span style="color: hsl(0, 100%, 40%);">-                           self.print_help()</span><br><span style="color: hsl(0, 100%, 40%);">-                               sys.exit(2)</span><br><span style="color: hsl(120, 100%, 40%);">+           trx_group = parser.add_argument_group("TRX interface")</span><br><span style="color: hsl(120, 100%, 40%);">+              trx_group.add_argument("-r", "--remote-addr",</span><br><span style="color: hsl(120, 100%, 40%);">+                     dest = "remote_addr", type = str, default = "127.0.0.1",</span><br><span style="color: hsl(120, 100%, 40%);">+                  help = "Set remote address (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+          trx_group.add_argument("-b", "--bind-addr",</span><br><span style="color: hsl(120, 100%, 40%);">+                       dest = "bind_addr", type = str, default = "0.0.0.0",</span><br><span style="color: hsl(120, 100%, 40%);">+                      help = "Set bind address (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+            trx_group.add_argument("-p", "--base-port",</span><br><span style="color: hsl(120, 100%, 40%);">+                       dest = "base_port", type = int, default = 6700,</span><br><span style="color: hsl(120, 100%, 40%);">+                     help = "Set base port number (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+                trx_group.add_argument("-P", "--bind-port",</span><br><span style="color: hsl(120, 100%, 40%);">+                       dest = "bind_port", type = int, default = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                        help = "Set bind port number (default random)")</span><br><span style="color: hsl(120, 100%, 40%);">+             trx_group.add_argument("-f", "--fuzzing",</span><br><span style="color: hsl(120, 100%, 40%);">+                 dest = "fuzzing", action = "store_true",</span><br><span style="color: hsl(120, 100%, 40%);">+                  help = "Send raw payloads (without CMD)")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                 elif o in ("-r", "--remote-addr"):</span><br><span style="color: hsl(0, 100%, 40%);">-                          self.remote_addr = v</span><br><span style="color: hsl(0, 100%, 40%);">-                    elif o in ("-b", "--bind-addr"):</span><br><span style="color: hsl(0, 100%, 40%);">-                            self.bind_addr = v</span><br><span style="color: hsl(0, 100%, 40%);">-                      elif o in ("-p", "--base-port"):</span><br><span style="color: hsl(0, 100%, 40%);">-                            self.base_port = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">-                 elif o in ("-P", "--bind-port"):</span><br><span style="color: hsl(0, 100%, 40%);">-                            self.bind_port = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">-                 elif o in ("-f", "--fuzzing"):</span><br><span style="color: hsl(0, 100%, 40%);">-                              self.fuzzing = True</span><br><span style="color: hsl(120, 100%, 40%);">+           return parser.parse_args()</span><br><span> </span><br><span>       def run(self):</span><br><span>               while True:</span><br><span>@@ -133,7 +101,7 @@</span><br><span>            cmd = cmd.strip().strip("\0")</span><br><span> </span><br><span>          # Send a command</span><br><span style="color: hsl(0, 100%, 40%);">-                if self.fuzzing:</span><br><span style="color: hsl(120, 100%, 40%);">+              if self.argv.fuzzing:</span><br><span>                        self.ctrl_link.send("%s" % cmd)</span><br><span>            else:</span><br><span>                        self.ctrl_link.send("CMD %s\0" % cmd)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12189">change 12189</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12189"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ib9bf5ed7384c4f34478975cefe03880eb2fc8069 </div>
<div style="display:none"> Gerrit-Change-Number: 12189 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>