3 ܓi9@srddlmZmZmZmZmZmZddlmZddl m Z GdddeZ Gddde eZ Gdd d e eeZ d S) )Plugin RedHatPlugin UbuntuPlugin DebianPlugin SoSPredicate PluginOpt) UbuntuPolicy) DebianPolicyc seZdZdZdZd(ZdZeddd ed ed d ed dedde ddedddd edddd gZ dZ dddddddgZ dZ fd d!Zd"d#Zd$d%Zd&d'ZZS)) Networkingz,Network and networking devices configurationZ networkingnetworkhardwaresystemzwww.example.com tracerouteFzcollect a traceroute to )defaultdescznamespace-patternzFSpecific namespace names or patterns to collect, whitespace delimited.)rZval_typer namespacesNz0Number of namespaces to collect, 0 for unlimitedzethtool-namespacesTz;Toggle if ethtool commands should be run for each namespace eepromdumpz*Toggle collection of 'ethtool -e' for NICsz-Wtcp_diagudp_diag inet_diag unix_diag netlink_diagaf_packet_diagxsk_diagZ acdgiklmPSTcstj|jddd|jdddddd d d d d ddddddddg|jddddddg|jdddd|jdd d d!gd|jd"|jd#|jd$d%d&|jd'd(d)d#|jd*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEg|jdF}|dGdHkr|dIj }x|D]|jdJdKdLdMgg}|jdN}|dGdHkr4x4|dIj D]$}|j dOr|j |j dPqW|jfdQdR|Dq4WdS}t |dTgdU}|j||dVdW|j|jdS)XNZbondZhosts)z/proc/net/bonding/bond.*z /etc/hostsz /etc/dnsmasq*z /etc/host*z/etc/inetd.confz /etc/iproute2z /etc/network*z/etc/nsswitch.confz/etc/resolv.confz /etc/gai.confz/etc/xinetd.confz /etc/xinetd.dz /etc/yp.confz /proc/net/z!/sys/class/net/*/device/numa_nodez/sys/class/net/*/flagsz/sys/class/net/*/statistics/z /etc/nmstate/z/var/lib/lldpad/z /etc/servicesz/proc/net/rpc/use-gss-proxyz/proc/net/rpc/*/channelz/proc/net/rpc/*/flushz /proc/net/cdpz /sys/net/cdpz/proc/net/eiconz ip -o addrip_addr) root_symlinkZtagszip route show table allZip_routeZiproute_show_table_allZ plotnetcfgznetstat z -neopanetstat)rz nstat -zasz netstat -sz netstat -s -6z -agnznetworkctl status -azip -6 route show table allzip -d route show cachezip -d -6 route show cachezip -4 rule listzip -6 rule listz ip vrf showz ip -s -d linkz ip -d addressz ifenslave -azip mroute showz ip maddr showzip -s -s neigh showzip neigh show nud noarpzbiosdevname -dztc -s qdisc showznmstatectl showz nmstatectl show --running-configz/sys/class/devlinkzdevlink dev param showzdevlink dev infozdevlink port showzdevlink sb showzdevlink sb pool showzdevlink sb port pool showzdevlink sb tc bind showzdevlink -s -v trap showz devlink devZstatusroutputzdevlink dev eswitch show zdevlink sb occupancy snapshot zdevlink sb occupancy show zdevlink -v resource show zdevlink dpipe table show namecsg|]}dd|qS)zdevlink dpipe table show z name ).0Zdname)devlinkr! /usr/lib/python3.6/networking.py sz$Networking.setup..zip -s macsec showZmacsec)kmodsT)predchanges)supersetupZ add_file_tags add_copy_specZadd_forbidden_pathadd_cmd_outputns_wideZ path_isdirZcollect_cmd_output splitlines startswithappendsplitrcollect_ss_ip_ethtool_infocollect_bridge_info)selfZdevlinksZ devlinks_listZ dev_tablesZdpipeZtablelnZip_macsec_show_cmdZ macsec_pred) __class__)r#r$r*1s            zNetworking.setupc CsJx*|jD] }|jd|dd|iqW|jdddddd d d d S) z% Command tags for ip/ethtool/netstat z ethtool -z .*Zethool_ZethtoolrZ ip_neigh_showZ ip_s_linkrZ netstat_agnZ netstat_s)zethtool [^-].*z ip -d addresszip -s -s neigh showz ip -s -d linkznetstat.*-neopaz netstat.*-agnz netstat -sN)ethtool_shortoptsZ add_cmd_tags)r4optr!r!r$add_command_tagss zNetworking.add_command_tagscCs|jddddgdS)zf Collect information about bridges (some data already collected via "ip .." commands) zbridge -s -s -d link showzbridge -s -s -d -t fdb showzbridge -s -s -d -t mdb showzbridge -d vlan showN)r,)r4r!r!r$r3s zNetworking.collect_bridge_infocCsd}t||jddid}|j||dd|jddd |jD}|jd d |Dd d |jd dddddddgd d |jdrd}|jd|j|d d |jdr|jd|jdd|jdd}|j|jd|jd}|rd d!d"}d#d!d"}|j |t||d$d%r$t|d!gd&nd'} |j |t||d$d%rNt|d!gd&nd'} x>|D]4} |j d(| } d)| } || d*}|j|d+|d,|d-|d.|d/|d0|d1|d2|j d3|d4|d2|j d5|d6g d7| d8|j|d9g| | d7d:|j|d;g| | d7d:|d}|j||| d<|jd=rZ|j|d>|d?|d@|dA|dBg| d d7| dCqZW|j d'S)Dz( Collect ss, ip and ethtool cmd outputs z ss -peaonmir&all)r&ZrequiredT)r'r(zss -scSsg|]}d|qS)z ethtool -r!)r"r7r!r!r$r%sz9Networking.collect_ss_ip_ethtool_info..cSsg|] }|dqS)z %(dev)sr!)r"Z_cmdr!r!r$r%sZethernet)deviceszethtool %(dev)sz ethtool --phy-statistics %(dev)sz!ethtool --show-priv-flags %(dev)szethtool --show-eee %(dev)szethtool --show-fec %(dev)szethtool --show-ntuple %(dev)sztc -s filter show dev %(dev)sz%tc -s filter show dev %(dev)s ingressrzethtool -e %(dev)szwWARNING: collecting an eeprom dump is known to cause certain NIC drivers (e.g. bnx2x/tg3) to interrupt device operationrz/bin/traceroute -n d)priorityzip netnszip netns exec znamespace-patternrz iptables -VZ nf_tables)cmdrz ip6tables -V)Z cmd_outputs)r')r&NZnamespaced_networkz namespaces/ z ip -d address showz ip route show table allz ip -s -s neigh showz ip -4 rule listz ip -6 rule listz ip vrf showz sysctl -az netstat z -neopaz netstat -sz -agnz nstat -zas2)r<subdirz iptables-save)r'r@r<zip6tables-save)r'r@zethtool-namespacesz ethtool %(dev)sz ethtool -i %(dev)sz ethtool -k %(dev)sz ethtool -S %(dev)sz ethtool -m %(dev)s)r:r<r@) rss_kmodsr,r6Zadd_device_cmdZ get_optionZ _log_warn trace_hostZget_network_namespacesZtest_predicater:r-r8)r4Zss_cmdZss_predZ_ecmdsr=Z cmd_prefixrZcoutZco6Ziptables_with_nftZip6tables_with_nft namespaceZ_devsZ_subdirZ ns_cmd_prefixr!r!r$r2s                    z%Networking.collect_ss_ip_ethtool_info)r r r )__name__ __module__ __qualname__Z short_descZ plugin_nameZprofilesrBrstrintZ option_listr-rAr6r*r8r3r2 __classcell__r!r!)r5r$r s,    w r cs(eZdZdZfddZddZZS)RedHatNetworkingzrhn.redhat.comc sPy,|jjjd}t|dddkr*d|_Wntk r@YnXtjdS)Nz net-toolsversionrz-T)policyZpackage_managerZ pkg_by_namerHr- Exceptionr)r*)r4Z netstat_pkg)r5r!r$r*4s zRedHatNetworking.setupcCs|jddddS)Nz /etc/nmstatez3(\s+(mka-cak|private-key-password|psk|password):).*z \1 ******)do_path_regex_sub)r4r!r!r$postprocAszRedHatNetworking.postproc)rDrErFrBr*rPrIr!r!)r5r$rJ1s rJcs(eZdZdZfddZddZZS)UbuntuNetworkingzarchive.ubuntu.comc sddddddddg}t|jtr<|jjd kr<|d g|_n&t|jtrb|jjd krb|d g|_tj|jd dddddddg|j dddgdS)NrrZ mptcp_diagrZraw_diagrrrg ףp= 6@r Z vsock_diagz/etc/netplan/*.yamlz/etc/network/interfacesz/etc/network/interfaces.dz/etc/resolv.confz/etc/resolvconfz/lib/netplan/*.yamlz/run/netplan/*.yamlz/run/systemd/networkz /etc/netplanz /lib/netplanz /run/netplan) isinstancerMrZ dist_versionrAr r)r*r+Zadd_dir_listing)r4Zcommon_ss_kmods)r5r!r$r*Ms.    zUbuntuNetworking.setupcCs|jddddS)Nz /etc/netplanz(\s+password:).*z \1 ******)rO)r4r!r!r$rPoszUbuntuNetworking.postproc)rDrErFrBr*rPrIr!r!)r5r$rQJs "rQN)Zsos.report.pluginsrrrrrrZsos.policies.distros.ubunturZsos.policies.distros.debianr r rJrQr!r!r!r$ s   $