Example #1
0
def load_prefix_lists():
    all_words = load_all_words()
    prefix_lists = {}
    for i in range(1, 8):  # only need prefixes up to 7, right?
        # ignore words that are the length of the prefix or less
        long_enough_words = f.select(lambda d: len(d) > i, all_words)
        # grab the first i letters
        prefix_lists[i] = set(f.walk(lambda d: d[0:i], long_enough_words))
        # this line is probably extraneous at this point, right? 
        # prefix_lists[i]= f.select(lambda d: len(d)==i, prefix_lists[i])
    return prefix_lists
Example #2
0
File: M6k.py Project: sjava/weihu
def get_bingfa(ip):
    try:
        child = telnet(ip)
        rslt = do_some(child, 'show subscriber peak')
        close(child)
    except (pexpect.EOF, pexpect.TIMEOUT) as e:
        return ('fail', None, ip)
    rslt1 = [x for x in re.split(r'\r\n-+\r\n', rslt) if 'Slot:' in x]
    rslt2 = [re_find(
        r'Slot:(\d+).*Total\s+(\d+)\s+(\d{4}/\d{2}/\d{2})', x, flags=re.S) for x in rslt1]
    rslt3 = select(bool, rslt2)
    rslt3 = [(x[0], int(x[1]), x[2]) for x in rslt3]
    return ('success', rslt3, ip)
Example #3
0
File: S93.py Project: sjava/weihu
def get_infs(ip):
    def _get_info(record):
        name = re_find(r'interface\s(x?gigabitethernet\S+)',
                       record, flags=re.I)
        desc = re_find(r'description\s(\S+ *\S*)', record)
        group = re_find(r'(eth-trunk\s\d+)', record)
        return dict(name=name, desc=desc, group=group)

    try:
        child = telnet(ip)
        rslt = do_some(child, 'disp cu interface')
        close(child)
    except (pexpect.EOF, pexpect.TIMEOUT) as e:
        return ('fail', None, ip)
    rslt1 = select(r'GigabitEthernet', rslt.split('#'))
    rslt2 = map(_get_info, rslt1)
    return ('success', rslt2, ip)
Example #4
0
File: S85.py Project: sjava/weihu
def get_vlans(ip):
    def _vlan(record):
        if re_test(r'(Ports:\snone.*Ports:\snone)', record, re.S):
            return 0
        vlan = re_find(r'VLAN\sID:\s(\d+)', record)
        vlan = int(vlan or 0)
        return vlan

    try:
        child = telnet(ip)
        rslt = do_some(child, 'disp vlan all')
        close(child)
        rslt = re.split(r'\r\n *\r\n', rslt)
        vlans = select(lambda x: x > 1,
                       lmap(_vlan, rslt))
    except (pexpect.EOF, pexpect.TIMEOUT) as e:
        return ('fail', None, ip)
    return ('success', vlans, ip)
Example #5
0
File: S85.py Project: sjava/weihu
def get_ports(ip):
    def _get_info(record):
        name = re_find(r'(\S+) current state :', record)
        state = re_find(r'current state : ?(\S+ ?\S+)', record)
        desc = re_find(r'Description: (\S+ *\S+)', record)
        inTraffic = int(re_find(
            r'\d+ seconds input:\s+\d+\spackets/sec\s(\d+)\sbits/sec', record) or 0) / 1000000
        outTraffic = int(re_find(
            r'\d+ seconds output:\s+\d+\spackets/sec\s(\d+)\sbits/sec', record) or 0) / 1000000
        return dict(name=name, desc=desc, state=state, inTraffic=inTraffic, outTraffic=outTraffic)

    try:
        child = telnet(ip)
        rslt = do_some(child, 'disp interface')
        close(child)
        rslt = re.split(r'\r\n *\r\n', rslt)
        rslt = select(lambda x: bool(x['name']),
                      lmap(_get_info, rslt))
    except (pexpect.EOF, pexpect.TIMEOUT) as e:
        return ('fail', None, ip)
    return ('success', rslt, ip)
Example #6
0
File: S93.py Project: sjava/weihu
def get_groups(ip):
    def _get_info(record):
        name = re_find(r'interface\s(eth-trunk)(\d+)', record, flags=re.I)
        name = ' '.join(name).lower()
        mode = re_find(r'mode\s(\S+)', record)
        if mode is None:
            mode = 'manual'
        elif 'lacp' in mode:
            mode = 'yes'
        desc = re_find(r'description\s(\S+ *\S*)', record)
        return dict(name=name, mode=mode, desc=desc)

    try:
        child = telnet(ip)
        rslt = do_some(child, 'disp cu int eth-trunk')
        close(child)
    except (pexpect.EOF, pexpect.TIMEOUT) as e:
        return ('fail', None, ip)
    rslt1 = select(r'interface', rslt.split('#'))
    rslt2 = map(_get_info, rslt1)
    return ('success', rslt2, ip)
Example #7
0
File: S93.py Project: sjava/weihu
def get_ports(ip):
    def _get_info(record):
        name = re_find(r'(\S+) current state :', record)
        state = re_find(r'current state : ?(\S+ ?\S+)', record)
        desc = re_find(r'Description:(\S+ *\S+)', record)
        inTraffic = int(
            re_find(r'300 seconds input rate (\d+)\sbits/sec', record) or 0) / 1000000
        outTraffic = int(
            re_find(r'300 seconds output rate (\d+)\sbits/sec', record) or 0) / 1000000
        return dict(name=name, desc=desc, state=state, inTraffic=inTraffic, outTraffic=outTraffic)

    try:
        child = telnet(ip)
        rslt = do_some(child, 'disp interface')
        close(child)
    except (pexpect.EOF, pexpect.TIMEOUT) as e:
        return ('fail', None, ip)
    rslt = select(lambda x: re_test(r'^x?gigabitethernet', x, re.I),
                  re.split(r'\r\n *\r\n *', rslt))
    rslt = lmap(_get_info, rslt)
    return ('success', rslt, ip)
Example #8
0
File: S89.py Project: sjava/weihu
def get_ports(ip):
    def _get_info(record):
        name = re_find(r'((?:xg|g|f)ei\S+) is \w+ ?\w+,', record)
        state = re_find(r'(?:xg|g|f)ei\S+ is (\w+ ?\w+),', record)
        desc = re_find(r'Description is (\S+ *\S+)', record)
        inTraffic = int(
            re_find(r'120 seconds input.*:\s+(\d+)\sBps', record) or 0) * 8 / 1000000
        outTraffic = int(
            re_find(r'120 seconds output.*:\s+(\d+)\sBps', record) or 0) * 8 / 1000000
        return dict(name=name, desc=desc, state=state, inTraffic=inTraffic, outTraffic=outTraffic)

    try:
        child = telnet(ip)
        rslt = do_some(child, 'show interface')
        close(child)
    except (pexpect.EOF, pexpect.TIMEOUT) as e:
        return ('fail', None, ip)
    rslt = re.split(r'\r\n *\r\n', rslt)
    rslt = select(lambda x: bool(x['name']),
                  lmap(_get_info, rslt))
    return ('success', rslt, ip)
Example #9
0
 def search(self, query, treat_as_regex=True):
     if treat_as_regex:
         return map(Task, select(query, self.iterate(raw=True)))
     return map(Task, ifilter(lambda t: query in t, self.iterate(raw=True)))
Example #10
0
 def merge_update(self, other: "Context", overwrite=False):
     matches = select(lambda key: key in other, self._reserved_keys.keys())
     if matches:
         raise ReservedKeyError(matches)
     return super().merge_update(other, overwrite=overwrite)