%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core18/current/usr/lib/python3/dist-packages/cloudinit/__pycache__/
Upload File :
Create Path :
Current File : //snap/core18/current/usr/lib/python3/dist-packages/cloudinit/__pycache__/netinfo.cpython-36.pyc

3

�AdKZ�@s�ddlZddlZddlmZmZddlmZddlmZddlm	Z	m
Z
ddlmZddl
mZej�Zggdd	d
�Zdd�Zd
d�Zdd�Zdd�Zd"dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd#d d!�ZdS)$�N)�copy�deepcopy)�IPv4Network)�log)�subp�util)�net_prefix_to_ipv4_mask)�SimpleTable�F)�ipv4�ipv6�hwaddr�upcCs\tj|�}i}�xF|D�]<}d|kr,|dng}|jd�dkrF|dnd}|td|ko\d|k�ggd�}x�|jd	g�D]�}|jd
�dkr�d|kr�ttd
|d���j�nd}|jdd�||jdd�|jdd�d�}	|dj|	�qv|d
dkrv|jdd�}
|
�r$|jd��r$|
�d|jdd���}
|
|jdd�d�}	|dj|	�qvW|||d<qW|S)a&Get network device dicts from ip route and ip link info.

    ipaddr_json: Output string from 'ip --json addr' command.

    Returns a dict of device info keyed by network device name containing
    device configuration values.

    Raises json.JSONDecodeError if json could not be decoded
    �flags�	link_type�ether�addressr
�UP�LOWER_UP)r
rrrZ	addr_infoZfamily�inet�	prefixlenz0.0.0.0/Zlocal�	broadcast�scope)�ip�mask�bcastrr�inet6�/�@)r�scope6rZifname)�json�loads�get�bool�strr�netmask�append)Zipaddr_jsonZipaddr_data�devs�devrrZdev_info�addrrZparsed_addrr�r*�3/usr/lib/python3/dist-packages/cloudinit/netinfo.py�_netdev_info_iproute_json+s6

 

r,cCs�i}d}�x�t|j��D�]�\}}tjd|�}|r~|jd�j�jd�d}|jd�jd�}ggdtd	|kopd
|k�d�||<qd|kr�tjd
|�}|s�tj	d||�q||dj
|j��qd|k�rLtjd|�}|s�tj	d||�q|j�}|jd�}|j
d�\}	}
}|�sd}||dj
|	|d�r4|dndt|�|dd��qd|krtjd|�}|�svtj	d||�q|jd�dk�r�|jd�||d<nd||d<qqqW|S)an
    DEPRECATED: Only used on distros that don't support ip json output
    Use _netdev_info_iproute_json() when possible.

    @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+.*r(�@rr�,r
rr)rrr
rrz?\s+inet6\s(?P<ip>\S+)(\s(peer\s\S+))?\sscope\s(?P<scope6>\S+).*z*Could not parse ip addr show: (line:%d) %srrzd\s+inet\s(?P<cidr4>\S+)(\smetric\s(?P<metric>\d+))?(\sbrd\s(?P<bcast>\S+))?\sscope\s(?P<scope>\S+).*�cidr4r�32rrr)rrrr�linkz-\s+link/(?P<link_type>\S+)\s(?P<hwaddr>\S+).*rrr
)�	enumerate�
splitlines�re�match�group�lower�splitr#�LOG�warningr&�	groupdict�pop�	partitionr)�
ipaddr_outr'Zdev_nameZnum�line�mrr5r/r)�_�prefixr*r*r+�_netdev_info_iprouteasd




rCc
Cs�i}�xz|j�D�]l}t|�dkr$q|ddkrf|j�d}|jd�rR|dd�}||krftt�||<|j�j�j�}t|�dkr�tj	d|d�r�d||d<�x�t
t|��D�]�}||d	kr�||djd
�\}}||dj|t|�d��q�||d
k�r ||d||ddd<q�||dk�rD||d||d<q�||dk�r�||ddk�r�||djd||di�n||djd||di�q�||dk�r�||dddd
||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.*>Trrrr)rrrrzaddress:r
rzaddr:rr�rzscope:r�scopeidz	.*<(\S+)>)rDrE���rJrJrJrJrJrJ)r3�lenr8�endswithr�DEFAULT_NETDEV_INFOr7�stripr4�search�ranger&r�
startswith�lstripr5r6)
�
ifconfig_datar'r?�curdev�toks�iZnetworkZnet_bits�addr6�resr*r*r+�_netdev_info_ifconfig_netbsd�sL
  $ $rYcCs.i}�x"|j�D�]}t|�dkr$q|ddkrf|j�d}|jd�rR|dd�}||krftt�||<|j�j�j�}|ddkr�d||d<n(t|�dkr�tj	d|d�r�d||d<�xjt
t|��D�]X}||d	k�r||d
jd||djd�i�q�||j
d
��r2||jd
�||d
d d<q�||dk�r^||d||d
d!d<q�||j
d��r�||jd�||d
d"d<q�||dk�r�||d||d
d#d<q�||dk�s�||dk�r�||d||d<q�||dk�rL||ddk�r,||djd||di�n||djd||di�q�||dk�r�||dd$dd||d}|||dd%d<q�||j
d��r�||jd�||dd&d<q�||dkr�tjd||d�}|�r|jd�||dd'd<q�||d||dd(d<q�WqW|S))NrrDrErFrGrTz
flags=\d+<up,rrrzaddr:zbcast:rrzmask:rr%r
rrrrHrrzscope:rrIz	.*<(\S+)>)rDrErJrJrJrJrJrJrJrJrJrJ)r3rKr8rLrrMr7rNr4rOrPr&rRrQr5r6)rSr'r?rTrUrVrWrXr*r*r+�_netdev_info_ifconfig�sZ
    $ $rZcs�i}tj�r0tjddgddgd�\}}t|�}n�tjd�r�y tjdddg�\}}t|�}Wq�tjk
r�tjddd	g�\}}t|�}Yq�Xn8tjd�r�tjddgddgd�\}}t|�}n
t	j
d
�|dkr�|Sttt
f�d��fd
d�	��||d�|S)NZifconfigz-arrG)�rcsrz--jsonr)Zshowz>Could not print networks: missing 'ip' and 'ifconfig' commandsr
�cspt|t�r|j�}n t|ttf�r,t|�}ntd��x6|D].\}}||krT|||<q:t|��r:�||�q:WdS)zQRecursively replace 'empty_vals' in data (dict, tuple, list)
        with new_valzUnexpected input to fillN)�
isinstance�dict�items�tuple�listr2�	TypeError)�data�new_valZ
empty_valsZmyiter�key�val)�fill�
recurse_typesr*r+rg7s




znetdev_info.<locals>.fill)rd�r
r\)r
ri)rZ	is_NetBSDrrY�whichr,�ProcessExecutionErrorrCrZr9r:r^r`ra)�emptyr'Z	ifcfg_out�_errr>r*)rgrhr+�netdev_infos,




rncCs�i}g|d<g|d<|j�}ddddddd�}�x<|D�]2}t|�}|sJq6|j�}dg}|ddkrvd|d	<d|d
<n^d|dkr�|djd�\}}	n"|d}d}	|jd
�t|	�|d
<||d	<t|	�|d
<d|d<xxtt|��D]h}
||
dk�r||
d|d<|jdd�||
dk�r.||
d|d<||
dkr�||
d|d<q�Wdj|�|d<|dj|�q6Wy(t	j	dddddddgddgd�\}}Wnt	j
k
�r�Y�nX|j�}
�x|
D�]�}i}|�s֐q�|j�}|ddk�r�d|d	<d|d<n|d|d	<d |d<d|d<x�tt|��D]�}
||
dk�rR||
d|d<d|d<||
dk�rp||
d|d<||
dk�r�||
d|d<||
d!k�r(|dd"|d<�q(W|dj|��q�W|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.
    rrr
)�destinationr�gateway�genmask�iface�metric�Ur�defaultz0.0.0.0rorqrr0�HrpZviarG�Gr(rrrsrrz	--onelinez-6�routera�table�all)r[z::/0ZUGz::Zexpires�e)r3rr8r&rrPrK�insert�joinrrk)Ziproute_data�routes�entriesZdefault_route_entryr?�entryrUrr)ZcidrrVZ
iproute_data6�_err6�entries6r*r*r+�_netdev_route_info_iprouteKs�


r�c	Cs4i}g|d<g|d<|j�}x�|D]�}|s,q"|j�}t|�dks"|ddks"|ddks"|ddks"|ddks"|dd	kr~q"t|�d
kr�|jd�|jd�|d|d
<d|d<|d|d|d|d|d|d|d|d
d�}|dj|�q"Wy$tjdddddgddgd�\}}Wntjk
�r6Yn�X|j�}x�|D]�}|�sT�qF|j�}t|�d
k�sF|ddk�sF|ddk�sF|ddk�sF|ddk�sF|ddk�r��qF|d|d|d|d|d|d|dd�}|ddk�r��qF|djd��rtjd d!|d�|d<|dj|��qFW|S)"Nrr�rZKernel�DestinationZInternetZ	Internet6ZRouting��-��rGrH��)rorprqrrs�ref�userr�netstatz-Arz--routez	--numeric)r[ZProtoZActive)rorprrsr�r�rrrr�loroz/128z\/128$r
)	r3r8rKr&rrkrLr4�sub)	Z
route_datar~rr?rUr�Zroute_data6r�r�r*r*r+�_netdev_route_info_netstat�sx
	

 
r�cCsni}tjd�r.tjddddg�\}}t|�}n<tjd�r`tjddddgd	d
gd�\}}t|�}n
tjd�|S)
Nrz-orxrar�z--routez	--numericz--extendrrG)r[z;Could not print routes: missing 'ip' and 'netstat' commands)rrjr�r�r9r:)r~Ziproute_outrmZ	route_outr*r*r+�
route_info�s



r�cCs�g}d}yt|d�}WnDtk
rZ}z&|jtjdjt|�d�dd��WYdd}~X�n2X|sddSdd	d
ddd
g}t|�}x�t|j	��D]�\}}x@|j
d�D]2}|j||d|d|d|j
d|�|df�q�Wx<|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�td��}
tjdd|
�}|j||	g�dj|�dS)N�.)rlz Net device info failed ({error}))�error�!�P�
ZDeviceZUpZAddressZMaskZScopez
Hw-Addressrrrrrr
rrr)rezNet device info�+)rn�	Exceptionr&r�center�formatr$r	�sortedr_r"�add_rowrK�
get_string�maxr3�extendr})�linesrlZnetdevr{ZfieldsZtblr(rcr)Znetdev_s�max_len�headerr*r*r+�netdev_pformatsN

 r�c
Cs�g}y
t�}WnTtk
rb}z6|jtjdjt|�d�dd��tjtd|�WYdd}~X�nbX|j	d��rddd	d
ddg}t
|�}xLt|j	d��D]:\}}t|�}|j||d
|d|d|d|dg�q�W|j
�}tt|j�td��}	tjdd|	�}
|j|
|g�|j	d��r�ddd	ddg}t
|�}xZt|j	d��D]H\}}t|�}|ddk�rb�q@|j||d
|d|d|dg��q@W|j
�}tt|j�td��}	tjdd|	�}
|j|
|g�dj|�dS)NzRoute info failed ({error}))r�r�r�zRoute info failed: %srZRouter�ZGatewayZGenmaskZ	InterfaceZFlagsrorprqrrr)rezRoute IPv4 infor�rr�zRoute IPv6 infor�)r�r�r&rr�r�r$Zlogexcr9r"r	r2r�r�rKr�r3r�r})
r�r~r{Z	fields_v4Ztbl_v4�n�rZroute_idZroute_sr�r�Z	fields_v6Ztbl_v6r*r*r+�
route_pformat?sf
$r��	ci-info: cCs�g}t�j�}|r4x*|D]}|jd||f�qWn
|j|�t�j�}|rnx*|D]}|jd||f�qRWn
|j|�dj|�S)Nz%s%sr�)r�r3r&r�r�r})rBr�Znetdev_linesr?Zroute_linesr*r*r+�
debug_info�s





r�)r
)r�)r r4rrZ	ipaddressrZ	cloudinitrZloggingrrZcloudinit.net.network_staterZcloudinit.simpletabler	Z	getLoggerr9rMr,rCrYrZrnr�r�r�r�r�r�r*r*r*r+�<module>s(6Q09
0XU4C

Zerion Mini Shell 1.0