def route_pformat(): lines = [] try: routes = route_info() except Exception: lines.append(util.center('Route info failed', '!', 80)) routes = None if routes is not None: fields = ['Route', 'Destination', 'Gateway', 'Genmask', 'Interface', 'Flags'] tbl = PrettyTable(fields) for (n, r) in enumerate(routes): route_id = str(n) tbl.add_row([route_id, r['destination'], r['gateway'], r['genmask'], r['iface'], r['flags']]) route_s = tbl.get_string() # If the route info command has rc = 0 and returns no route # information the routes list will be empty. # Older versions of PrettyTable do not print empty tables and the # max_len calculation below fails. Set max_len to 80 in this case. if route_s: max_len = len(max(route_s.splitlines(), key=len)) else: max_len = 80 header = util.center("Route info", "+", max_len) lines.extend([header, route_s]) return "\n".join(lines)
def netdev_pformat(): lines = [] empty = "." try: netdev = netdev_info(empty=empty) except Exception as e: lines.append( util.center( "Net device info failed ({error})".format(error=str(e)), '!', 80)) else: if not netdev: return '\n' fields = ['Device', 'Up', 'Address', 'Mask', 'Scope', 'Hw-Address'] tbl = SimpleTable(fields) for (dev, data) in sorted(netdev.items()): for addr in data.get('ipv4'): tbl.add_row( (dev, data["up"], addr["ip"], addr["mask"], addr.get('scope', empty), data["hwaddr"])) for addr in data.get('ipv6'): tbl.add_row( (dev, data["up"], addr["ip"], empty, addr.get("scope6", empty), data["hwaddr"])) if len(data.get('ipv6')) + len(data.get('ipv4')) == 0: tbl.add_row((dev, data["up"], empty, empty, empty, data["hwaddr"])) netdev_s = tbl.get_string() max_len = len(max(netdev_s.splitlines(), key=len)) header = util.center("Net device info", "+", max_len) lines.extend([header, netdev_s]) return "\n".join(lines) + "\n"
def _pprint_key_entries(user, key_fn, key_entries, hash_meth='md5', prefix='ci-info: '): if not key_entries: message = ("%sno authorized ssh keys fingerprints found for user %s.\n" % (prefix, user)) util.multi_log(message) return tbl_fields = ['Keytype', 'Fingerprint (%s)' % (hash_meth), 'Options', 'Comment'] tbl = PrettyTable(tbl_fields) for entry in key_entries: if _is_printable_key(entry): row = [] row.append(entry.keytype or '-') row.append(_gen_fingerprint(entry.base64, hash_meth) or '-') row.append(entry.options or '-') row.append(entry.comment or '-') tbl.add_row(row) authtbl_s = tbl.get_string() authtbl_lines = authtbl_s.splitlines() max_len = len(max(authtbl_lines, key=len)) lines = [ util.center("Authorized keys from %s for user %s" % (key_fn, user), "+", max_len), ] lines.extend(authtbl_lines) for line in lines: util.multi_log(text="%s%s\n" % (prefix, line), stderr=False, console=True)
def netdev_pformat(): lines = [] try: netdev = netdev_info(empty=".") except Exception: lines.append(util.center("Net device info failed", '!', 80)) netdev = None if netdev is not None: fields = ['Device', 'Up', 'Address', 'Mask', 'Hw-Address'] tbl = PrettyTable(fields) for (dev, d) in netdev.iteritems(): tbl.add_row([dev, d["up"], d["addr"], d["mask"], d["hwaddr"]]) netdev_s = tbl.get_string() max_len = len(max(netdev_s.splitlines(), key=len)) header = util.center("Net device info", "+", max_len) lines.extend([header, netdev_s]) return "\n".join(lines)
def route_pformat(): lines = [] try: routes = route_info() except Exception as e: lines.append( util.center('Route info failed ({error})'.format(error=str(e)), '!', 80)) util.logexc(LOG, "Route info failed: %s" % e) else: if routes.get('ipv4'): fields_v4 = [ 'Route', 'Destination', 'Gateway', 'Genmask', 'Interface', 'Flags' ] tbl_v4 = SimpleTable(fields_v4) for (n, r) in enumerate(routes.get('ipv4')): route_id = str(n) tbl_v4.add_row([ route_id, r['destination'], r['gateway'], r['genmask'], r['iface'], r['flags'] ]) route_s = tbl_v4.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route IPv4 info", "+", max_len) lines.extend([header, route_s]) if routes.get('ipv6'): fields_v6 = [ 'Route', 'Destination', 'Gateway', 'Interface', 'Flags' ] tbl_v6 = SimpleTable(fields_v6) for (n, r) in enumerate(routes.get('ipv6')): route_id = str(n) if r['iface'] == 'lo': continue tbl_v6.add_row([ route_id, r['destination'], r['gateway'], r['iface'], r['flags'] ]) route_s = tbl_v6.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route IPv6 info", "+", max_len) lines.extend([header, route_s]) return "\n".join(lines) + "\n"
def netdev_pformat(): lines = [] try: netdev = netdev_info(empty=".") except Exception: lines.append(util.center("Net device info failed", '!', 80)) else: fields = ['Device', 'Up', 'Address', 'Mask', 'Scope', 'Hw-Address'] tbl = PrettyTable(fields) for (dev, d) in netdev.items(): tbl.add_row([dev, d["up"], d["addr"], d["mask"], ".", d["hwaddr"]]) if d.get('addr6'): tbl.add_row([dev, d["up"], d["addr6"], ".", d.get("scope6"), d["hwaddr"]]) netdev_s = tbl.get_string() max_len = len(max(netdev_s.splitlines(), key=len)) header = util.center("Net device info", "+", max_len) lines.extend([header, netdev_s]) return "\n".join(lines)
def route_pformat(): lines = [] try: routes = route_info() except Exception as e: lines.append(util.center('Route info failed', '!', 80)) util.logexc(LOG, "Route info failed: %s" % e) else: if routes.get('ipv4'): fields_v4 = [ 'Route', 'Destination', 'Gateway', 'Genmask', 'Interface', 'Flags' ] tbl_v4 = PrettyTable(fields_v4) for (n, r) in enumerate(routes.get('ipv4')): route_id = str(n) tbl_v4.add_row([ route_id, r['destination'], r['gateway'], r['genmask'], r['iface'], r['flags'] ]) route_s = tbl_v4.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route IPv4 info", "+", max_len) lines.extend([header, route_s]) if routes.get('ipv6'): fields_v6 = [ 'Route', 'Proto', 'Recv-Q', 'Send-Q', 'Local Address', 'Foreign Address', 'State' ] tbl_v6 = PrettyTable(fields_v6) for (n, r) in enumerate(routes.get('ipv6')): route_id = str(n) tbl_v6.add_row([ route_id, r['proto'], r['recv-q'], r['send-q'], r['local address'], r['foreign address'], r['state'] ]) route_s = tbl_v6.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route IPv6 info", "+", max_len) lines.extend([header, route_s]) return "\n".join(lines)
def route_pformat(): lines = [] try: routes = route_info() except Exception: lines.append(util.center('Route info failed', '!', 80)) routes = None if routes is not None: fields = ['Route', 'Destination', 'Gateway', 'Genmask', 'Interface', 'Flags'] tbl = PrettyTable(fields) for (n, r) in enumerate(routes): route_id = str(n) tbl.add_row([route_id, r['destination'], r['gateway'], r['genmask'], r['iface'], r['flags']]) route_s = tbl.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route info", "+", max_len) lines.extend([header, route_s]) return "\n".join(lines)
def route_pformat(): lines = [] try: routes = route_info() except Exception as e: lines.append( util.center( 'Route info failed ({error})'.format(error=str(e)), '!', 80)) util.logexc(LOG, "Route info failed: %s" % e) else: if routes.get('ipv4'): fields_v4 = ['Route', 'Destination', 'Gateway', 'Genmask', 'Interface', 'Flags'] tbl_v4 = SimpleTable(fields_v4) for (n, r) in enumerate(routes.get('ipv4')): route_id = str(n) tbl_v4.add_row([route_id, r['destination'], r['gateway'], r['genmask'], r['iface'], r['flags']]) route_s = tbl_v4.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route IPv4 info", "+", max_len) lines.extend([header, route_s]) if routes.get('ipv6'): fields_v6 = ['Route', 'Destination', 'Gateway', 'Interface', 'Flags'] tbl_v6 = SimpleTable(fields_v6) for (n, r) in enumerate(routes.get('ipv6')): route_id = str(n) if r['iface'] == 'lo': continue tbl_v6.add_row([route_id, r['destination'], r['gateway'], r['iface'], r['flags']]) route_s = tbl_v6.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route IPv6 info", "+", max_len) lines.extend([header, route_s]) return "\n".join(lines) + "\n"
def route_pformat(): lines = [] try: routes = route_info() except Exception as e: lines.append(util.center('Route info failed', '!', 80)) util.logexc(LOG, "Route info failed: %s" % e) routes = None if routes is not None: fields_v4 = ['Route', 'Destination', 'Gateway', 'Genmask', 'Interface', 'Flags'] if routes.get('ipv6') is not None: fields_v6 = ['Route', 'Proto', 'Recv-Q', 'Send-Q', 'Local Address', 'Foreign Address', 'State'] tbl_v4 = PrettyTable(fields_v4) for (n, r) in enumerate(routes.get('ipv4')): route_id = str(n) tbl_v4.add_row([route_id, r['destination'], r['gateway'], r['genmask'], r['iface'], r['flags']]) route_s = tbl_v4.get_string() if fields_v6: tbl_v6 = PrettyTable(fields_v6) for (n, r) in enumerate(routes.get('ipv6')): route_id = str(n) tbl_v6.add_row([route_id, r['proto'], r['recv-q'], r['send-q'], r['local address'], r['foreign address'], r['state']]) route_s = route_s + tbl_v6.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route info", "+", max_len) lines.extend([header, route_s]) return "\n".join(lines)
def _pprint_key_entries(user, key_fn, key_entries, hash_meth="sha256", prefix="ci-info: "): if not key_entries: message = ( "%sno authorized SSH keys fingerprints found for user %s.\n" % (prefix, user)) util.multi_log(message, console=True, stderr=False) return tbl_fields = [ "Keytype", "Fingerprint (%s)" % (hash_meth), "Options", "Comment", ] tbl = SimpleTable(tbl_fields) for entry in key_entries: if _is_printable_key(entry): row = [ entry.keytype or "-", _gen_fingerprint(entry.base64, hash_meth) or "-", entry.options or "-", entry.comment or "-", ] tbl.add_row(row) authtbl_s = tbl.get_string() authtbl_lines = authtbl_s.splitlines() max_len = len(max(authtbl_lines, key=len)) lines = [ util.center( "Authorized keys from %s for user %s" % (key_fn, user), "+", max_len, ), ] lines.extend(authtbl_lines) for line in lines: util.multi_log(text="%s%s\n" % (prefix, line), stderr=False, console=True)
def _pprint_key_entries(user, key_fn, key_entries, hash_meth='md5', prefix='ci-info: '): if not key_entries: message = ( "%sno authorized ssh keys fingerprints found for user %s.\n" % (prefix, user)) util.multi_log(message) return tbl_fields = [ 'Keytype', 'Fingerprint (%s)' % (hash_meth), 'Options', 'Comment' ] tbl = PrettyTable(tbl_fields) for entry in key_entries: if _is_printable_key(entry): row = [] row.append(entry.keytype or '-') row.append(_gen_fingerprint(entry.base64, hash_meth) or '-') row.append(entry.options or '-') row.append(entry.comment or '-') tbl.add_row(row) authtbl_s = tbl.get_string() authtbl_lines = authtbl_s.splitlines() max_len = len(max(authtbl_lines, key=len)) lines = [ util.center("Authorized keys from %s for user %s" % (key_fn, user), "+", max_len), ] lines.extend(authtbl_lines) for line in lines: util.multi_log(text="%s%s\n" % (prefix, line), stderr=False, console=True)
def route_pformat(): lines = [] try: routes = route_info() except Exception as e: lines.append( util.center( "Route info failed ({error})".format(error=str(e)), "!", 80 ) ) util.logexc(LOG, "Route info failed: %s" % e) else: if routes.get("ipv4"): fields_v4 = [ "Route", "Destination", "Gateway", "Genmask", "Interface", "Flags", ] tbl_v4 = SimpleTable(fields_v4) for (n, r) in enumerate(routes.get("ipv4")): route_id = str(n) tbl_v4.add_row( [ route_id, r["destination"], r["gateway"], r["genmask"], r["iface"], r["flags"], ] ) route_s = tbl_v4.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route IPv4 info", "+", max_len) lines.extend([header, route_s]) if routes.get("ipv6"): fields_v6 = [ "Route", "Destination", "Gateway", "Interface", "Flags", ] tbl_v6 = SimpleTable(fields_v6) for (n, r) in enumerate(routes.get("ipv6")): route_id = str(n) if r["iface"] == "lo": continue tbl_v6.add_row( [ route_id, r["destination"], r["gateway"], r["iface"], r["flags"], ] ) route_s = tbl_v6.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route IPv6 info", "+", max_len) lines.extend([header, route_s]) return "\n".join(lines) + "\n"