diff --git a/jc/parsers/procfile.py b/jc/parsers/procfile.py index a2d0532f..8e5cf2a0 100644 --- a/jc/parsers/procfile.py +++ b/jc/parsers/procfile.py @@ -119,6 +119,10 @@ def _parse_modules(): print('modules') +def _parse_mtrr(): + print('mtrr') + + def _parse_partitions(): print('partitions') @@ -139,10 +143,6 @@ def _parse_softirqs(): print('softirqs') -def _parse_scsi(): - print('scsi') - - def _parse_stat(): print('stat') @@ -213,6 +213,9 @@ def _parse_net_protocols(): def _parse_net_route(): print('net route') +def _parse_net_unix(): + print('net unix') + #### @@ -251,6 +254,14 @@ def _parse_pid_mountinfo(): def _parse_pid_fdinfo(): print('pid fdinfo') +#### + +def _parse_scsi_scsi(): + print('scsi scsi') + +def _parse_scsi_device_info(): + print('scsi device_info') + def parse( data: str, @@ -278,30 +289,30 @@ def parse( if jc.utils.has_data(data): # signatures - uptime_p = re.compile(r'^\d+.\d\d \d+.\d\d$') - loadavg_p = re.compile(r'^\d+.\d\d \d+.\d\d \d+.\d\d \d+/\d+ \d+$') + buddyinfo_p = re.compile(r'^Node \d+, zone\s+\w+\s+(?:\d+\s+){11}\n') + consoles_p = re.compile(r'^\w+\s+[\-WUR]{3} \([ECBpba ]+\)\s+\d+:\d+\n') cpuinfo_p = re.compile(r'^processor\s+:.*\nvendor_id\s+:.*\ncpu family\s+:.*\n') - meminfo_p = re.compile(r'^MemTotal:.*\nMemFree:.*\nMemAvailable:.*\n') - version_p = re.compile(r'^.+\sversion\s[^\n]+$') crypto_p = re.compile(r'^name\s+:.*\ndriver\s+:.*\nmodule\s+:.*\n') + devices_p = re.compile(r'^Character devices:\n\s+\d+ .*\n') diskstats_p = re.compile(r'^\s*\d+\s+\d\s\w+\s(?:\d+\s){16}\d\n') filesystems_p = re.compile(r'^(?:(?:nodev\t|\t)\w+\n){3}') interrupts_p = re.compile(r'^\s+(?:CPU\d+ +)+\n\s*\d+:\s+\d+') iomem_p = re.compile(r'^00000000-[0-9a-f]{8} : .*\n[0-9a-f]{8}-[0-9a-f]{8} : ') ioports_p = re.compile(r'^0000-[0-9a-f]{4} : .*\n\s*0000-[0-9a-f]{4} : ') + loadavg_p = re.compile(r'^\d+.\d\d \d+.\d\d \d+.\d\d \d+/\d+ \d+$') locks_p = re.compile(r'^\d+: (?:POSIX|FLOCK|OFDLCK)\s+(?:ADVISORY|MANDATORY)\s+(?:READ|WRITE) ') + meminfo_p = re.compile(r'^MemTotal:.*\nMemFree:.*\nMemAvailable:.*\n') modules_p = re.compile(r'^\w+ \d+ \d+ (?:-|\w+,).*0x[0-9a-f]{16}\n') - buddyinfo_p = re.compile(r'^Node \d+, zone\s+\w+\s+(?:\d+\s+){11}\n') + mtrr_p = re.compile(r'^reg\d+: base=0x[0-9a-f]+ \(') pagetypeinfo_p = re.compile(r'^Page block order:\s+\d+\nPages per block:\s+\d+\n\n') partitions_p = re.compile(r'^major minor #blocks name\n\n\s*\d+\s+\d+\s+\d+ \w+\n') - vmallocinfo_p = re.compile(r'^0x[0-9a-f]{16}-0x[0-9a-f]{16}\s+\d+ \w+\+\w+/\w+ ') - softirqs_p = re.compile(r'^\s+(CPU\d+\s+)+\n\s+HI:\s+\d') - scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') - stat_p = re.compile(r'^cpu\s+(?: \d+){10}.*intr ', re.DOTALL) - consoles_p = re.compile(r'^\w+\s+[\-WUR]{3} \([ECBpba ]+\)\s+\d+:\d+\n') - devices_p = re.compile(r'^Character devices:\n\s+\d+ .*\n') slabinfo_p = re.compile(r'^slabinfo - version: \d+.\d+\n') + softirqs_p = re.compile(r'^\s+(CPU\d+\s+)+\n\s+HI:\s+\d') + stat_p = re.compile(r'^cpu\s+(?: \d+){10}.*intr ', re.DOTALL) swaps_p = re.compile(r'^Filename\t\t\t\tType\t\tSize\t\tUsed\t\tPriority\n') + uptime_p = re.compile(r'^\d+.\d\d \d+.\d\d$') + version_p = re.compile(r'^.+\sversion\s[^\n]+$') + vmallocinfo_p = re.compile(r'^0x[0-9a-f]{16}-0x[0-9a-f]{16}\s+\d+ \w+\+\w+/\w+ ') vmstat_p = re.compile(r'nr_free_pages \d+\n.* \d$', re.DOTALL) zoneinfo_p = re.compile(r'^Node \d+, zone\s+\w+\n') @@ -310,15 +321,16 @@ def parse( net_arp_p = re.compile(r'^IP address\s+HW type\s+Flags\s+HW address\s+Mask\s+Device\n') net_dev_p = re.compile(r'^Inter-\|\s+Receive\s+\|\s+Transmit\n') net_dev_mcast_p = re.compile(r'^\d+\s+\w+\s+\d+\s+\d+\s+[0-9a-f]{12}') + net_if_inet6_p = re.compile(r'^[0-9a-f]{32} \d\d \d\d \d\d \d\d\s+\w+') net_igmp_p = re.compile(r'^Idx\tDevice\s+:\s+Count\s+Querier\tGroup\s+Users\s+Timer\tReporter\n') net_igmp6_p = re.compile(r'^\d+\s+\w+\s+[0-9a-f]{32}\s+\d+\s+[0-9A-F]{8}\s+\d+') - net_if_inet6_p = re.compile(r'^[0-9a-f]{32} \d\d \d\d \d\d \d\d\s+\w+') net_ipv6_route_p = re.compile(r'^[0-9a-f]{32} \d\d [0-9a-f]{32} \d\d [0-9a-f]{32} (?:[0-9a-f]{8} ){4}\s+\w+') net_netlink_p = re.compile(r'^sk\s+Eth Pid\s+Groups\s+Rmem\s+Wmem') net_netstat_p = re.compile(r'^TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed') net_packet_p = re.compile(r'^sk RefCnt Type Proto Iface R Rmem User Inode\n') net_protocols_p = re.compile(r'^protocol size sockets memory press maxhdr slab module cl co di ac io in de sh ss gs se re sp bi br ha uh gp em\n') net_route_p = re.compile(r'^Iface\tDestination\tGateway \tFlags\tRefCnt\tUse\tMetric\tMask\t\tMTU\tWindow\tIRTT\s+\n') + net_unix_p = re.compile(r'^Num RefCount Protocol Flags Type St Inode Path\n') pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') @@ -330,31 +342,34 @@ def parse( pid_mountinfo_p = re.compile(r'^\d+ \d+ \d+:\d+ /.+\n') pid_fdinfo_p = re.compile(r'^pos:\t\d+\nflags:\t\d+\nmnt_id:\t\d+\n') + scsi_device_info = re.compile(r"^'\w+' '.+' 0x\d+") + scsi_scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') + procmap = { - uptime_p: _parse_uptime, - loadavg_p: _parse_loadavg, + buddyinfo_p: _parse_buddyinfo, + consoles_p: _parse_consoles, cpuinfo_p: _parse_cpuinfo, - meminfo_p: _parse_meminfo, - version_p: _parse_version, crypto_p: _parse_crypto, + devices_p: _parse_devices, diskstats_p: _parse_diskstats, filesystems_p: _parse_filesystems, interrupts_p: _parse_interrupts, iomem_p: _parse_iomem, ioports_p: _parse_ioports, + loadavg_p: _parse_loadavg, locks_p: _parse_locks, + meminfo_p: _parse_meminfo, modules_p: _parse_modules, - buddyinfo_p: _parse_buddyinfo, + mtrr_p: _parse_mtrr, pagetypeinfo_p: _parse_pagetypeinfo, partitions_p: _parse_partitions, - vmallocinfo_p: _parse_vmallocinfo, slabinfo_p: _parse_slabinfo, softirqs_p: _parse_softirqs, - scsi_p: _parse_scsi, stat_p: _parse_stat, swaps_p: _parse_swaps, - consoles_p: _parse_consoles, - devices_p: _parse_devices, + uptime_p: _parse_uptime, + version_p: _parse_version, + vmallocinfo_p: _parse_vmallocinfo, vmstat_p: _parse_vmstat, zoneinfo_p: _parse_zoneinfo, @@ -362,26 +377,30 @@ def parse( net_arp_p: _parse_net_arp, net_dev_p: _parse_net_dev, - net_ipv6_route_p: _parse_net_ipv6_route, # before net_dev_mcast - net_dev_mcast_p: _parse_net_dev_mcast, # after net_ipv6_route + net_if_inet6_p: _parse_net_if_inet6, net_igmp_p: _parse_net_igmp, net_igmp6_p: _parse_net_igmp6, - net_if_inet6_p: _parse_net_if_inet6, net_netlink_p: _parse_net_netlink, net_netstat_p: _parse_net_netstat, net_packet_p: _parse_net_packet, net_protocols_p: _parse_net_protocols, net_route_p: _parse_net_route, + net_unix_p: _parse_net_unix, + net_ipv6_route_p: _parse_net_ipv6_route, # before net_dev_mcast + net_dev_mcast_p: _parse_net_dev_mcast, # after net_ipv6_route - pid_status_p: _parse_pid_status, - pid_statm_p: _parse_pid_statm, - pid_stat_p: _parse_pid_stat, - pid_smaps_p: _parse_pid_smaps, # before pid_maps - pid_maps_p: _parse_pid_maps, # after pid_smaps - pid_numa_maps_p: _parse_pid_numa_maps, + pid_fdinfo_p: _parse_pid_fdinfo, pid_io_p: _parse_pid_io, pid_mountinfo_p: _parse_pid_mountinfo, - pid_fdinfo_p: _parse_pid_fdinfo + pid_numa_maps_p: _parse_pid_numa_maps, + pid_stat_p: _parse_pid_stat, + pid_statm_p: _parse_pid_statm, + pid_status_p: _parse_pid_status, + pid_smaps_p: _parse_pid_smaps, # before pid_maps + pid_maps_p: _parse_pid_maps, # after pid_smaps + + scsi_device_info: _parse_scsi_device_info, + scsi_scsi_p: _parse_scsi_scsi } for reg_pattern, parse_func in procmap.items():