aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/bsc_control.py
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bsc_control.py')
-rwxr-xr-xcontrib/bsc_control.py120
1 files changed, 0 insertions, 120 deletions
diff --git a/contrib/bsc_control.py b/contrib/bsc_control.py
deleted file mode 100755
index c1b09ce74..000000000
--- a/contrib/bsc_control.py
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/python
-# -*- mode: python-mode; py-indent-tabs-mode: nil -*-
-"""
-/*
- * Copyright (C) 2016 sysmocom s.f.m.c. GmbH
- *
- * All Rights Reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-"""
-
-from optparse import OptionParser
-from ipa import Ctrl
-import socket
-
-verbose = False
-
-def connect(host, port):
- if verbose:
- print "Connecting to host %s:%i" % (host, port)
-
- sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- sck.setblocking(1)
- sck.connect((host, port))
- return sck
-
-def do_set_get(sck, var, value = None):
- (r, c) = Ctrl().cmd(var, value)
- sck.send(c)
- answer = Ctrl().rem_header(sck.recv(4096))
- return (answer,) + Ctrl().verify(answer, r, var, value)
-
-def set_var(sck, var, val):
- (a, _, _) = do_set_get(sck, var, val)
- return a
-
-def get_var(sck, var):
- (_, _, v) = do_set_get(sck, var)
- return v
-
-def _leftovers(sck, fl):
- """
- Read outstanding data if any according to flags
- """
- try:
- data = sck.recv(1024, fl)
- except socket.error as (s_errno, strerror):
- return False
- if len(data) != 0:
- tail = data
- while True:
- (head, tail) = Ctrl().split_combined(tail)
- print "Got message:", Ctrl().rem_header(head)
- if len(tail) == 0:
- break
- return True
- return False
-
-if __name__ == '__main__':
- parser = OptionParser("Usage: %prog [options] var [value]")
- parser.add_option("-d", "--host", dest="host",
- help="connect to HOST", metavar="HOST")
- parser.add_option("-p", "--port", dest="port", type="int",
- help="use PORT", metavar="PORT", default=4249)
- parser.add_option("-g", "--get", action="store_true",
- dest="cmd_get", help="perform GET operation")
- parser.add_option("-s", "--set", action="store_true",
- dest="cmd_set", help="perform SET operation")
- parser.add_option("-v", "--verbose", action="store_true",
- dest="verbose", help="be verbose", default=False)
- parser.add_option("-m", "--monitor", action="store_true",
- dest="monitor", help="monitor the connection for traps", default=False)
-
- (options, args) = parser.parse_args()
-
- verbose = options.verbose
-
- if options.cmd_set and options.cmd_get:
- parser.error("Get and set options are mutually exclusive!")
-
- if not (options.cmd_get or options.cmd_set or options.monitor):
- parser.error("One of -m, -g, or -s must be set")
-
- if not (options.host):
- parser.error("Destination host and port required!")
-
- sock = connect(options.host, options.port)
-
- if options.cmd_set:
- if len(args) < 2:
- parser.error("Set requires var and value arguments")
- _leftovers(sock, socket.MSG_DONTWAIT)
- print "Got message:", set_var(sock, args[0], ' '.join(args[1:]))
-
- if options.cmd_get:
- if len(args) != 1:
- parser.error("Get requires the var argument")
- _leftovers(sock, socket.MSG_DONTWAIT)
- (a, _, _) = do_set_get(sock, args[0])
- print "Got message:", a
-
- if options.monitor:
- while True:
- if not _leftovers(sock, 0):
- print "Connection is gone."
- break
- sock.close()