%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/lib/python3/dist-packages/cloudinit/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/lib/python3/dist-packages/cloudinit/__pycache__/netinfo.cpython-35.pyc



"�T`}H�@sddlmZmZddlZddlmZddlmZddlmZddlm	Z	ddl
mZej�Z
dgd	gd
ddd
iZdd�Zdd�Zdd�Zddd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!d"�ZdS)#�)�copy�deepcopyN)�log)�net_prefix_to_ipv4_mask)�subp)�util)�SimpleTable�ipv4�ipv6�hwaddr��upFcCs^i}d}xKt|j��D]7\}}tjd|�}|r�|jd�j�jd�d}|jd�jd�}dgd	gd
ddtd
|ko�d|k�i||<qd|krtjd|�}|s�tj	d||�q||d	j
|j��qd|kr�tjd|�}|sLtj	d||�q|j�}|jd�}|j
d�\}	}
}|s�d}||dj
d|	d|dr�|dnddt|�d|di�qd|krtjd|�}|stj	d||�q|jd�dkrB|jd
�||d
<qVd||d
<qqqW|S)a1
    Get network device dicts from ip route and ip link info.

    @param ipaddr_out: Output string from 'ip addr show' command.

    @returns: A dict of device info keyed by network device name containing
              device configuration values.
    @raise: TypeError if ipaddr_out isn't a string.
    Nz.^\d+:\s(?P<dev>[^:]+):\s+<(?P<flags>\S+)>\s+.*�dev�@r�flags�,r	r
rrr
ZUPZLOWER_UP�inet6z/\s+inet6\s(?P<ip>\S+)\sscope\s(?P<scope6>\S+).*z*Could not parse ip addr show: (line:%d) %s�inetzH\s+inet\s(?P<cidr4>\S+)(\sbrd\s(?P<bcast>\S+))?\sscope\s(?P<scope>\S+).*�cidr4�/�32�ip�bcast�mask�scope�linkz-\s+link/(?P<link_type>\S+)\s(?P<hwaddr>\S+).*Z	link_type�ether)�	enumerate�
splitlines�re�match�group�lower�split�bool�LOG�warning�append�	groupdict�pop�	partitionr)�
ipaddr_out�devsZdev_nameZnum�line�mrr r�addr�_�prefix�r2�3/usr/lib/python3/dist-packages/cloudinit/netinfo.py�_netdev_info_iproute s^
"+
	

r4c
Csi}x|j�D]�}t|�dkr.q|ddkr�|j�d}|jd�rm|dd�}||kr�tt�||<|j�j�j�}t|�dkr�tj	d|d�r�d||d<x3t
t|��D]}||d	krG||djd
�\}}||djd|d
t|�i�q�||dkrx||d||ddd<q�||dkr�||d||d<q�||dkr||ddkr�||djd||di�q	||djd||di�q�||dkr`||dddd
||d}|||ddd<q�||j
d�r�||jd�||dd d<q�||dkr�tjd||d�}	|	r�|	jd�||dd!d<q�||d||dd"d<q�WqW|S)#Nr�	� �:�zflags=[x\d]+<up.*>Tr
rrr	rr�	broadcastrzaddress:rrzaddr:r
��	prefixlenzscope:�scope6�scopeidz	.*<(\S+)>)r5r6���r>r>r>r>r>r>)r�lenr#�endswithr�DEFAULT_NETDEV_INFOr"�stripr�search�ranger'r�
startswith�lstripr r!)
�
ifconfig_datar,r-�curdev�toks�iZnetworkZnet_bits�addr6�resr2r2r3�_netdev_info_ifconfig_netbsd_sL!&&&&"&rMcCs�i}x�|j�D]�}t|�dkr.q|ddkr�|j�d}|jd�rm|dd�}||kr�tt�||<|j�j�j�}|ddkr�d||d<n6t|�dkr�tj	d|d�r�d||d<x�t
t|��D]�}||d	krP||d
jd||djd�i�q||j
d
�r�||jd
�||d
d d<q||dkr�||d||d
d!d<q||j
d�r�||jd�||d
d"d<q||dkr$||d||d
d#d<q||dksD||dkr]||d||d<q||dkr�||ddkr�||djd||di�q�||djd||di�q||dkr||dd$dd||d}|||dd%d<q||j
d�rU||jd�||dd&d<q||dkrtjd||d�}|r�|jd�||dd'd<q||d||dd(d<qWqW|S))Nrr5r6r7r8r
Tz
flags=\d+<up,rr	rzaddr:zbcast:rr9zmask:rZnetmaskrrrr
r:r;rzscope:r<r=z	.*<(\S+)>)r5r6r>r>r>r>r>r>r>r>r>r>)rr?r#r@rrAr"rBrrCrDr'rFrEr r!)rGr,r-rHrIrJrKrLr2r2r3�_netdev_info_ifconfig�sZ!&!&! &&&&"&rNcs$i}tj�rHtjddgdddg�\}}t|�}n�tjd�r�tjdddg�\}}t|�}nRtjd�r�tjddgdddg�\}}t|�}n
tjd	�|d
kr�|St	t
tf�d
d��fdd
���|d|�|S)NZifconfigz-a�rcsrr8rr/Zshowz>Could not print networks: missing 'ip' and 'ifconfig' commandsr�cs�t|t�r|j�}n0t|ttf�rBt|�}ntd��xI|D]A\}}||krz|||<qUt|��rU�||�qUWdS)zTRecursively replace 'empty_vals' in data (dict, tuple, list)
           with new_valzUnexpected input to fillN)�
isinstance�dict�items�tuple�listr�	TypeError)�data�new_valZ
empty_valsZmyiter�key�val)�fill�
recurse_typesr2r3r[�s
znetdev_info.<locals>.fillrX)rrP)rZ	is_NetBSDrrM�whichr4rNr%r&rRrTrU)�emptyr,Z	ifcfg_out�_errr+r2)r[r\r3�netdev_info�s$''r`cCs}i}g|d<g|d<|j�}ddddddddddd	di}x�|D]�}t|�}|srqW|j�}d
g}|ddkr�d
|d<d
|d<n}d|dkr�|djd�\}}	n-|d}d}	|jd�t|	�|d<||d<t|	�|d<d
|d<x�tt|��D]|}
||
dkrv||
d|d<|jdd�||
dkr�||
d|d<||
d	kr>||
d|d	<q>Wdj|�|d<|dj|�qWWy:t	j	dddddddgdddg�\}}Wnt	j
k
r7YnBX|j�}
x2|
D]*}i}|s`qK|j�}|ddkr�d|d<d|d<n"|d|d<d|d<d
|d<x�tt|��D]�}
||
dkr�||
d|d<d|d<||
dkr||
d|d<||
d	kr>||
d|d	<||
d kr�|dd!|d<q�W|dj|�qKW|S)"aP
    Get network route dicts from ip route info.

    @param iproute_data: Output string from ip route command.

    @returns: A dict containing ipv4 and ipv6 route entries as lists. Each
              item in the list is a route dictionary representing destination,
              gateway, flags, genmask and interface information.
    r	r
�destinationrr�gateway�genmask�iface�metric�Ur�defaultz0.0.0.0rr�HZviar8�Grrz	--onelinez-6�routerU�table�allrOz::/0ZUGz::Zexpires�e)rrr#r'rrDr?�insert�joinr�ProcessExecutionError)Ziproute_data�routes�entriesZdefault_route_entryr-�entryrIrr/ZcidrrJZ
iproute_data6�_err6�entries6r2r2r3�_netdev_route_info_iproute�s�


	











rvc	Cs�i}g|d<g|d<|j�}x3|D]+}|s<q-|j�}t|�dks-|ddks-|ddks-|ddks-|ddks-|dd	kr�q-t|�d
kr�|jd�|jd�|d|d
<d|d<d|dd|dd|dd|dd|dd|dd|dd|d
i}|dj|�q-Wy4tjdddddgdddg�\}}Wntjk
r�Yn8X|j�}x(|D] }|s�q�|j�}t|�d
ks�|ddks�|ddks�|ddks�|dd ks�|dd!kr;q�d|dd|dd|dd|dd|dd|dd|di}|dd"kr�q�|djd#�r�tjd$d%|d�|d<|dj|�q�W|S)&Nr	r
�rZKernel�DestinationZInternetZ	Internet6ZRouting��-��rarbr8rcr:r�re��refZuserd�netstatz-Arz--routez	--numericrOZProtoZActive�loz/128z\/128$r)	rr#r?r'rrpr@r�sub)	Z
route_datarqrrr-rIrsZroute_data6rtrur2r2r3�_netdev_route_info_netstatBsl


"  









.
"  





r�cCs�i}tjd�rEtjddddg�\}}t|�}nXtjd�r�tjddddgd	d
dg�\}}t|�}n
tjd�|S)
Nrz-orjrUr�z--routez	--numericz--extendrOrr8z;Could not print routes: missing 'ip' and 'netstat' commands)rr]rvr�r%r&)rqZiproute_outr_Z	route_outr2r2r3�
route_info�s!'r�cCs$g}d}ytd|�}WnStk
rt}z3|jtjdjdt|��dd��WYdd}~Xn�X|sdSdd	d
ddd
g}t|�}xt|j	��D]\}}xR|j
d�D]A}|j||d|d|d|j
d|�|df�q�WxN|j
d�D]=}|j||d|d||j
d|�|df�q'Wt|j
d��t|j
d��dkr�|j||d||||df�q�W|j
�}	tt|	j�dt��}
tjdd|
�}|j||	g�dj|�dS)N�.r^z Net device info failed ({error})�error�!�P�
ZDeviceZUpZAddressZMaskZScopez
Hw-Addressr	r
rrrrr
r<rrYzNet device info�+)r`�	Exceptionr'r�center�format�strr�sortedrS�get�add_rowr?�
get_string�maxr�extendro)�linesr^ZnetdevrmZfieldsZtblrrWr/Znetdev_s�max_len�headerr2r2r3�netdev_pformat�s< !!.r�c
Cskg}y
t�}Wngtk
r|}zG|jtjdjdt|��dd��tjtd|�WYdd}~Xn�X|j	d�rgddd	d
ddg}t
|�}xbt|j	d��D]K\}}t|�}|j||d
|d|d|d|dg�q�W|j
�}tt|j�dt��}	tjdd|	�}
|j|
|g�|j	d�rZddd	ddg}t
|�}xnt|j	d��D]W\}}t|�}|ddkr�q�|j||d
|d|d|dg�q�W|j
�}tt|j�dt��}	tjdd|	�}
|j|
|g�dj|�dS)NzRoute info failed ({error})r�r�r�zRoute info failed: %sr	ZRouterxZGatewayZGenmaskZ	InterfaceZFlagsrarbrcrdrrYzRoute IPv4 infor�r
r�zRoute IPv6 infor�)r�r�r'rr�r�r�Zlogexcr%r�rrr�r�r?r�rr�ro)
r�rqrmZ	fields_v4Ztbl_v4�n�rZroute_idZroute_sr�r�Z	fields_v6Ztbl_v6r2r2r3�
route_pformat�sJ

'	"	" r�z	ci-info: cCs�g}t�j�}|rFx5|D]}|jd||f�q"Wn
|j|�t�j�}|r�x5|D]}|jd||f�qoWn
|j|�dj|�S)Nz%s%sr�)r�rr'r�r�ro)r1r�Znetdev_linesr-Zroute_linesr2r2r3�
debug_info�s



r�)rrrZ	cloudinitrZloggingZcloudinit.net.network_staterrrZcloudinit.simpletablerZ	getLoggerr%rAr4rMrNr`rvr�r�r�r�r�r2r2r2r3�<module>s*?/8*RI")

Zerion Mini Shell 1.0