diff options
| author | Mattias Andrée <maandree@operamail.com> | 2014-03-03 16:20:00 +0100 | 
|---|---|---|
| committer | Mattias Andrée <maandree@operamail.com> | 2014-03-03 16:20:00 +0100 | 
| commit | 6c6c34d05a75954c07314bc4bdf3f87cb2729ddf (patch) | |
| tree | b3d64ad130c4761871a2ea7d5199b78300a9607c /src/plugins | |
| parent | add clock (diff) | |
| download | xpybar-6c6c34d05a75954c07314bc4bdf3f87cb2729ddf.tar.gz xpybar-6c6c34d05a75954c07314bc4bdf3f87cb2729ddf.tar.bz2 xpybar-6c6c34d05a75954c07314bc4bdf3f87cb2729ddf.tar.xz | |
misc
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
| -rw-r--r-- | src/plugins/cpuonline.py | 52 | ||||
| -rw-r--r-- | src/plugins/snmp.py | 71 | ||||
| -rw-r--r-- | src/plugins/snmp6.py | 63 | ||||
| -rw-r--r-- | src/plugins/softirqs.py | 64 | ||||
| -rw-r--r-- | src/plugins/vmstat.py | 62 | 
5 files changed, 312 insertions, 0 deletions
| diff --git a/src/plugins/cpuonline.py b/src/plugins/cpuonline.py new file mode 100644 index 0000000..75e8bed --- /dev/null +++ b/src/plugins/cpuonline.py @@ -0,0 +1,52 @@ +# -*- python -*- +''' +xpybar – xmobar replacement written in python +Copyright © 2014  Mattias Andrée (maandree@member.fsf.org) + +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, see <http://www.gnu.org/licenses/>. +''' + +from util import * + + +class CPUOnline: +    ''' +    Online CPU listing +     +    @variable  offline:list<int>   Offline CPU:s +    @variable  online:list<int>    Online CPU:s +    @variable  possible:list<int>  Possible CPU:s +    @variable  present:list<int>   Present CPU:s +    ''' +     +     +    def __init__(self): +        ''' +        Constructor +        ''' +        def expand(data): +            if '-' not in data: +                return [int(data)] +            range_ = lambda a, b : list(range(a, b + 1)) +            return range_(*[int(x) for x in data.split('-')]) +         +        data = [] +        for filename in ('offline', 'online', 'possible', 'present'): +            with open('/sys/devices/system/cpu/online', 'rb') as file: +                data.append(file.read()) +        data = [x.decode('utf-8', 'replace').replace('\n', ' ').replace(',', ' ') for x in data] +        data = [reduce(lambda x, y : x + y, map(expand, x.split(' '))) for x in data] +         +        (self.offline, self.online, self.possible, self.present) = data + diff --git a/src/plugins/snmp.py b/src/plugins/snmp.py new file mode 100644 index 0000000..dd73583 --- /dev/null +++ b/src/plugins/snmp.py @@ -0,0 +1,71 @@ +# -*- python -*- +''' +xpybar – xmobar replacement written in python +Copyright © 2014  Mattias Andrée (maandree@member.fsf.org) + +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, see <http://www.gnu.org/licenses/>. +''' + +from util import * + + +class SNMP: +    ''' +    IPv4 SNMP data +    ''' +     +     +    def __init__(self): +        ''' +        Constructor +        ''' +        snmp = None +        with open('/proc/net/snmp', 'rb') as file: +            snmp = file.read() +        snmp = snmp.decode('utf-8', 'replace') +         +        filter_ = lambda array : filter(lambda x : not x == '', array) +        snmp = list(map(lambda x : x.split(' '), filter_(snmp.split('\n')))) +        snmp_h = filter(lambda i : i % 2 == 0, range(len(snmp))) +        snmp_d = filter(lambda i : i % 2 == 0, range(len(snmp))) +        snmp_h = list(map(lambda i : snmp[i], snmp_h)) +        snmp_d = list(map(lambda i : snmp[i], snmp_d)) +        snmp = zip(snmp_h, snmp_d) +         +        self.__info = {} +        for header_list, data_list in snmp: +            prefix = header_list[0][:-1] +            for suffix, value in zip(header_list[1:], data_list[1:]): +                self.__info[prefix + suffix] = int(value) +     +     +    def __contains__(self, key): +        ''' +        Get whether or not a key is available +         +        @param   key:str  The key +        @return  :bool    The availability +        ''' +        return key in self.__info +     +     +    def __getitem__(self, key): +        ''' +        Lookup a field from '/proc/net/snmp' +         +        @param   key:str  The field name +        @return  :int     The value of the field +        ''' +        return self.__info[key] + diff --git a/src/plugins/snmp6.py b/src/plugins/snmp6.py new file mode 100644 index 0000000..99ccfaa --- /dev/null +++ b/src/plugins/snmp6.py @@ -0,0 +1,63 @@ +# -*- python -*- +''' +xpybar – xmobar replacement written in python +Copyright © 2014  Mattias Andrée (maandree@member.fsf.org) + +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, see <http://www.gnu.org/licenses/>. +''' + +from util import * + + +class SNMP6: +    ''' +    IPv6 SNMP data +    ''' +     +     +    def __init__(self): +        ''' +        Constructor +        ''' +        snmp6 = None +        with open('/proc/net/snmp6', 'rb') as file: +            snmp6 = file.read() +        snmp6 = snmp6.decode('utf-8', 'replace') +        filter_ = lambda array : filter(lambda x : not x == '', array) +        snmp6 = map(lambda x : filter_(x.split(' ')), filter_(snmp6.split('\n'))) +         +        self.__info = {} +        for field, value in snmp6: +            self.__info[field] = int(value) +     +     +    def __contains__(self, key): +        ''' +        Get whether or not a key is available +         +        @param   key:str  The key +        @return  :bool    The availability +        ''' +        return key in self.__info +     +     +    def __getitem__(self, key): +        ''' +        Lookup a field from '/proc/net/snmp6' +         +        @param   key:str  The field name +        @return  :int     The value of the field +        ''' +        return self.__info[key] + diff --git a/src/plugins/softirqs.py b/src/plugins/softirqs.py new file mode 100644 index 0000000..2adb191 --- /dev/null +++ b/src/plugins/softirqs.py @@ -0,0 +1,64 @@ +# -*- python -*- +''' +xpybar – xmobar replacement written in python +Copyright © 2014  Mattias Andrée (maandree@member.fsf.org) + +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, see <http://www.gnu.org/licenses/>. +''' + +from util import * + + +class SoftIRQs: +    ''' +    Data from /proc/softirqs +    ''' +     +     +    def __init__(self): +        ''' +        Constructor +        ''' +        softirqs = None +        with open('/proc/softirqs', 'rb') as file: +            softirqs = file.read() +        softirqs = softirqs.decode('utf-8', 'replace') +         +        filter_ = lambda array : filter(lambda x : not x == '', array) +        softirqs = map(lambda x : x.split(' '), filter_(softirqs.split('\n')[1:])) +         +        self.__info = {} +        for line in softirqs: +            self.__info[line[0][:-1]] = [int(x) for x in line[1:]] +     +     +    def __contains__(self, key): +        ''' +        Get whether or not a key is available +         +        @param   key:str  The key +        @return  :bool    The availability +        ''' +        return key in self.__info +     +     +    def __getitem__(self, key): +        ''' +        Lookup a field from '/proc/softirqs' +         +        @param   key:str     The field name +        @return  :list<int>  The value of the field, for each processor +        ''' +        return self.__info[key] + diff --git a/src/plugins/vmstat.py b/src/plugins/vmstat.py new file mode 100644 index 0000000..7b522e6 --- /dev/null +++ b/src/plugins/vmstat.py @@ -0,0 +1,62 @@ +# -*- python -*- +''' +xpybar – xmobar replacement written in python +Copyright © 2014  Mattias Andrée (maandree@member.fsf.org) + +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, see <http://www.gnu.org/licenses/>. +''' + +from util import * + + +class VMStat: +    ''' +    Various virtual memory statistics +    ''' +     +     +    def __init__(self): +        ''' +        Constructor +        ''' +        vmstat = None +        with open('/proc/vmstat', 'rb') as file: +            vmstat = file.read() +        vmstat = vmstat.decode('utf-8', 'replace') +        vmstat = map(lambda x : x.split(' '), filter(lambda x : not x == '', vmstat.split('\n'))) +         +        self.__info = {} +        for field, value in vmstat: +            self.__info[field] = int(value) +     +     +    def __contains__(self, key): +        ''' +        Get whether or not a key is available +         +        @param   key:str  The key +        @return  :bool    The availability +        ''' +        return key in self.__info +     +     +    def __getitem__(self, key): +        ''' +        Lookup a field from '/proc/vmstat' +         +        @param   key:str  The field name +        @return  :int     The value of the field +        ''' +        return self.__info[key] + | 
