Beispiel #1
0
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)
Beispiel #2
0
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"
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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"
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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:
        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)
Beispiel #10
0
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"
Beispiel #11
0
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)
Beispiel #12
0
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)
Beispiel #14
0
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"