%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/salt/modules/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/salt/modules/network.pyc

�
���^c@@s�dZddlmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddl
ZddlZddlZddlZddlZddlZddlZddlmZddlmZddlmZddlmZeje�Zd�Zd	d
d�Z e!e!d�Z"d
�Z#d�Z$d�Z%d�Z&d�Z'd�Z(d�Z)d�Z*d�Z+d�Z,d�Z-d�Z.d�Z/d�Z0d�Z1d�Z2d�Z3ej4j5j6j7d�d��Z8ej4j5j6j7d �d!��Z9ej4j5j6j7d"�d#��Z:d$�Z;d%�Z<ej4j=j>e<d&�Z?d'�Z@d(�ZAdd)�ZCd*�ZDd+�ZEd,�ZFd-�ZGdd.�ZHde!ddd/�ZIej4j=j>eId0�ZJde!dd1�ZKej4j=j>eKd2�ZLd3�ZMd4�ZNd5�ZOdd6�ZPd7�ZQd8�ZRd9�ZSd:�ZTd;�ZUd<�ZVd=�ZWdd>�ZXdd?�ZYd@�ZZdA�Z[dB�Z\dS(Cu7
Module for gathering and managing network information
i(tabsolute_importtunicode_literalstprint_functionN(tCommandExecutionError(tsix(trange(t	ipaddresscC@s tjjj�rtdfStS(u)
    Only work on POSIX-like systems
    uRThe network execution module cannot be loaded on Windows: use win_network instead.(tsalttutilstplatformt
is_windowstFalsetTrue(((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt__virtual__"s
u255.255.255.255i	cC@sntjjj|�}tjtjtj�}|jtjtj	d�|j
d|d|t|�f�tS(u
    Send Wake On Lan packet to a host

    CLI Example:

    .. code-block:: bash

        salt '*' network.wol 08-00-27-13-69-77
        salt '*' network.wol 080027136977 255.255.255.255 7
        salt '*' network.wol 08:00:27:13:69:77 255.255.255.255 7
    is�iis������(
RRtnetworktmac_str_to_bytestsockettAF_INETt
SOCK_DGRAMt
setsockoptt
SOL_SOCKETtSO_BROADCASTtsendtotintR(tmactbcasttdestporttdesttsock((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytwol,s
$cC@s�|r^tddkr:dj|tjjj|��}q|dj|tjjj|��}ndjtjjj|��}|r�td|�}|ddkr�tStSntd	|�Sd
S(u�
    Performs an ICMP ping to a host

    .. versionchanged:: 2015.8.0
        Added support for SunOS

    CLI Example:

    .. code-block:: bash

        salt '*' network.ping archlinux.org

    .. versionadded:: 2015.5.0

    Return a True or False instead of ping output.

    .. code-block:: bash

        salt '*' network.ping archlinux.org return_boolean=True

    Set the time to wait for a response in seconds.

    .. code-block:: bash

        salt '*' network.ping archlinux.org timeout=3
    ukerneluSunOSuping -c 4 {1} {0}uping -W {0} -c 4 {1}u
ping -c 4 {0}ucmd.run_alluretcodeiucmd.runN(	t
__grains__tformatRRRt
sanitize_hostt__salt__RR(thostttimeouttreturn_booleantcmdtret((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytping?s$$cC@s<g}d}td|�}x|j�D]}|j�}|jd�r�|ji	|dd6|dd6|dd	6|d
d6|dd
6|dd6|dd6|dd6|dd6�n|jd�r)|ji|dd6|dd6|dd	6|d
d6|dd
6|dd6|dd6|dd6�q)q)W|S(u6
    Return netstat information for Linux distros
    unetstat -tulpneaucmd.runutcpiuprotoiurecv-qiusend-qiu
local-addressiuremote-addressiustateiuuseriuinodeiuprogramuudp(R!t
splitlinestsplitt
startswithtappend(R&R%touttlinetcomps((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netstat_linuxms6		c
C@s/g}d}td|�}x|j�D]�}|j�}d}d}d}t|�}|jd�sw|jd�r+d}	x�|	|dkr'||	jd	�}
|
dd
kr�|
djd�}|djd�d}n|
dd
kr�|
d}n|
ddkr|
d}n|	d7}	q�Wn|jd�r�|d}|dkrYd}n|ji	|dd6|dd6|dd6|dd6|dd6|d6|d6|d6|d6�n|jd�r)|ji|dd6|dd6|dd6|dd6|dd6|d6|d6|d6�q)q)W|S(uf
    Return ss information for Linux distros
    (netstat is deprecated and may not be available)
    uss -tulpneaucmd.runiuutcpuudpiiu:uusersu,u"uuiduinouESTABuESTABLISHEDuprotoiurecv-qiusend-qiu
local-addressiuremote-addressustateuuseruinodeuprogram(R!R(R)tlenR*R+(
R&R%R,R-R.tss_usertss_inodet
ss_programtlengthtitfieldstuserstss_state((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt	_ss_linux�s\


			cC@s�i}tjd�}tdd�}x�|j�D]�}yF|jdd�\}}}}}|j|�j�\}	}
}}Wntt	fk
r�q2nX|
r�|
}
dj
|	dkr�dn|	�}n'|}
dj
|	dkr�dn|	�}|	rdjd�|
D��}
nd	j|
jd
d��}
|dkrDd}nd	j|jd
d��}||j
|
i�j
|i�j
|i�j
|i�d
<|||
|||d<q2W|S(uE
    Get process information for network connections using fstat
    uKinternet(6)? (?:stream tcp 0x\S+ (\S+)|dgram udp (\S+))(?: [<>=-]+ (\S+))?$ucmd.runufstatiutcp{0}uuudp{0}cs@s!|]}|dkr|VqdS(u[]N((t.0tx((s8/usr/lib/python2.7/site-packages/salt/modules/network.pys	<genexpr>�su.u:iu*.*uuserucmdN(tretcompileR!R(R)tNonetmatchtgroupst
ValueErrortAttributeErrorRtjointrsplitt
setdefault(R&t	_fstat_reR,R-tuserR%tpidt_tdetailstipv6ttcptudptremote_addrt
local_addrtproto((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netinfo_openbsd�s0	!%$!	:c
C@si}tddjtddkr)dnd�dt�}x�|j�D]�}|j�\}}}}}}}	dj|jd	d
��}dj|	jd	d
��}	||j|i�j|	i�j|i�j|i�d<||||	||d<qHW|S(
uH
    Get process information for network connections using sockstat
    ucmd.runusockstat -46 {0} | tail -n+2ukerneluNetBSDu-nutpython_shellu.u:iuuserucmd(	R!RRRR(R)RCRDRE(
R&R,R-RGR%RHRIRPRORN((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netinfo_freebsd_netbsd�s	!:cC@sri}tddkrd}nd}td|dt�}x0|j�D]"}|j�\}}|||<qHW|S(u/
    Return a dict of pid to ppid mappings
    ukerneluSunOSups -a -o pid,ppid | tail +2ups -ax -o pid,ppid | tail -n+2ucmd.runRR(RR!RR(R)(R&R%R,R-RHtppid((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_ppids	c@sPg}tddkr�x�dD]�}dj|�}td|dt�}x�|j�D]�}|j�}i|dd	6|d
d6|dd
6|dd6|dd6}|d	jd�r�|d|d<n|j|�qUWqWnd}td|dt�}xo|j�D]a}|j�}|ji|dd	6|d
d6|dd
6|dd6|dd6|dd6�q	Wd}td|dt�}xd|j�D]V}|j�}|ji|dd	6|d
d6|dd
6|dd6|dd6�q�Wt�}tddkrt	�}ntdd kr2t
�}nxtt|��D]}	||	d}
||	d}||	d	}y||
||�Wnt
k
r�qEnXt�fd�tj|�D��}
y/tt�fd�tj|
�D���}Wntk
rqEnX�|d||	d<dj|�|df�||	d<qEW|S(!u4
    Return netstat information for BSD flavors
    ukerneluNetBSDuinetuinet6unetstat -f {0} -an | tail -n+3ucmd.runRRiuprotoiurecv-qiusend-qiu
local-addressiuremote-addressutcpiustateunetstat -p tcp -an | tail -n+3unetstat -p udp -an | tail -n+3uOpenBSDuFreeBSDc3@s-|]#\}}|�kr||fVqdS(N((R:R;ty(tptr(s8/usr/lib/python2.7/site-packages/salt/modules/network.pys	<genexpr>]sc3@s'|]\}}|�kr|VqdS(N((R:R;RV(RW(s8/usr/lib/python2.7/site-packages/salt/modules/network.pys	<genexpr>bsuuseru/ucmduprogram(uinetuinet6(uFreeBSDuNetBSD(RRR!RR(R)R*R+RURQRSRR0tKeyErrortdictRt	iteritemstnexttitert
StopIterationRC(R&taddr_familyR%R,R-R.tentryRTtnetinfotidxtlocaltremoteRPt	conn_ppidt
master_pid((RWs8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netstat_bsdsv
			
%)
)cC@sitjd�g}xOdD]G}dj|�}td|dt�}x}|j�D]o}|j�}|ji|dkrdndd	6|d
d6|dd
6|dd6|dd6|dd6�qRWdj|�}td|dt�}xt|j�D]f}|j�}|ji|dkr$dndd	6|dd6t|�dkrR|dndd6�q�WqW|S(u6
    Return netstat information for SunOS flavors
    u-User and program not (yet) supported on SunOSuinetuinet6u#netstat -f {0} -P tcp -an | tail +5ucmd.runRRutcp6utcpuprotoiurecv-qiusend-qiu
local-addressiuremote-addressiustateu#netstat -f {0} -P udp -an | tail +5uudp6uudpiu(uinetuinet6(	tlogtwarningRR!RR(R)R+R0(R&R^R%R,R-R.((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netstat_sunosks.

		/cC@s�g}x�dD]�}dj|�}td|dt�}x||j�D]n}|j�}t|�dkroqEnd}t}d|dks�d|dkr�d}ngd	|dkr�d	}nNd
|dks�d|dkr�d
}t}nd|dkrd}t}n|rtt|�d
kr�|ji|d6|dd6|dd6|dd6|dd6|dd6�q�qEt|�dkrE|ji|d6|dd6|dd6�qEqEWq
W|S(u6
    Return netstat information for SunOS flavors
    uinetu!netstat -n -a -f {0} | tail -n +3ucmd.runRRiutcpiutcp4utcp6uudpuudp4uudp6iuprotoiurecv-qiusend-qiu
local-addressiuremote-addressustate(uinetN(	RR!RR(R)R0R>RR+(R&R^R%R,R-R.t
proto_seenttcp_flag((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netstat_aix�sF
 		 				cC@s�g}d}td|dt�}xk|j�D]]}|j�}|jidd6|dd6|dd	6|d
d6|dd
6|dd6�q/Wd}td|dt�}x�|j�D]�}|j�}t|�dkr'|jidd6|dd6|dd	6dd6|d
d
6|dd6�q�t|�dkr�|jidd6|dd6|dd	6dd6|d
d
6|dd6�q�q�q�W|S(u>
    Return netstat routing information for Linux distros
    unetstat -A inet -rn | tail -n+3ucmd.runRRuinetuaddr_familyiudestinationiugatewayiunetmaskiuflagsiu	interfaceu netstat -A inet6 -rn | tail -n+3iuinet6ui(R!RR(R)R+R0(R&R%R,R-R.((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netstat_route_linux�sD			cC@s�g}d}td|dt�}x|j�D]}|j�}|ddkrWq/n|ddkr�d}|dd	kr�|d
}n|jidd6d
d6|dd6d
d6dd6|d6�q/t|d�}d}|dd	kr�|d}n|jidd6|dd6d
d6|dd6dd6|d6�q/Wd}td|dt�}x�|j�D]�}|j�}|ddkr�qgn|ddkrd}|dd	kr�|d
}n|jidd6dd6|dd6dd6dd6|d6�qg|ddkr{d}|dd	kr3|d}n|dd}|jidd6|d6dd6dd6dd6|d6�qgt|d�}d}|dd	kr�|d}n|jidd6|dd6dd6dd6dd6|d6�qgW|S(un
    Return ip routing information for Linux distros
    (netstat is deprecated and may not be available)
    uip -4 route show table mainucmd.runRRiuunreachableudefaultuiudeviuinetuaddr_familyu0.0.0.0udestinationiugatewayunetmaskuUGuflagsu	interfaceiunetworkuUuip -6 route show table alluinet6u::/0ulocalu/128u::(R!RR(R)R+tconvert_cidr(R&R%R,R-R.tip_interfacetaddress_maskt
local_address((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_ip_route_linux�s�
	
	
	
	
	cC@s�g}d}td|dt�}x�|j�D]�}|j�}tddkr�ttjdd��dkr�|jid	d
6|dd6|dd
6|dd6|dd6|dd6�q/|jid	d
6|dd6|dd
6dd6|dd6|dd6�q/Wd}td|dt�}xg|j�D]Y}|j�}|jidd
6|dd6|dd
6dd6|dd6|dd6�q1W|S(uB
    Return netstat routing information for FreeBSD and macOS
    unetstat -f inet -rn | tail -n+5ucmd.runRRuosuFreeBSDuosmajorreleaseii
uinetuaddr_familyudestinationiugatewayiunetmaskiuflagsiu	interfaceuu netstat -f inet6 -rn | tail -n+5uinet6(R!RR(R)RRtgetR+(R&R%R,R-R.((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netstat_route_freebsdDs@.			cC@sg}d}td|dt�}xg|j�D]Y}|j�}|jidd6|dd6|dd	6d
d6|dd
6|dd6�q/Wd}td|dt�}xg|j�D]Y}|j�}|jidd6|dd6|dd	6d
d6|dd
6|dd6�q�W|S(u7
    Return netstat routing information for NetBSD
    unetstat -f inet -rn | tail -n+5ucmd.runRRuinetuaddr_familyiudestinationiugatewayuunetmaskiuflagsiu	interfaceu netstat -f inet6 -rn | tail -n+5uinet6(R!RR(R)R+(R&R%R,R-R.((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netstat_route_netbsdks0		cC@sg}d}td|dt�}xg|j�D]Y}|j�}|jidd6|dd6|dd	6d
d6|dd
6|dd6�q/Wd}td|dt�}xg|j�D]Y}|j�}|jidd6|dd6|dd	6d
d6|dd
6|dd6�q�W|S(u8
    Return netstat routing information for OpenBSD
    unetstat -f inet -rn | tail -n+5ucmd.runRRuinetuaddr_familyiudestinationiugatewayuunetmaskiuflagsiu	interfaceu netstat -f inet6 -rn | tail -n+5uinet6(R!RR(R)R+(R&R%R,R-R.((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netstat_route_openbsd�s0		cC@sFg}d}td|dt�}x|j�D]q}|j�}|jidd6|dd6|dd	6d
d6|dd
6t|�dkr�|dnd
d6�q/Wd}td|dt�}x|j�D]q}|j�}|jidd6|dd6|dd	6d
d6|dd
6t|�dkr3|dnd
d6�q�W|S(u6
    Return netstat routing information for SunOS
    unetstat -f inet -rn | tail +5ucmd.runRRuinetuaddr_familyiudestinationiugatewayuunetmaskiuflagsiiu	interfaceunetstat -f inet6 -rn | tail +5uinet6(R!RR(R)R+R0(R&R%R,R-R.((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netstat_route_sunos�s0	+	+cC@sFg}d}td|dt�}x|j�D]q}|j�}|jidd6|dd6|dd	6d
d6|dd
6t|�dkr�|dnd
d6�q/Wd}td|dt�}x|j�D]q}|j�}|jidd6|dd6|dd	6d
d6|dd
6t|�dkr3|dnd
d6�q�W|S(u4
    Return netstat routing information for AIX
    u netstat -f inet -rn | tail -n +5ucmd.runRRuinetuaddr_familyiudestinationiugatewayuunetmaskiuflagsiiu	interfaceu!netstat -f inet6 -rn | tail -n +5uinet6(R!RR(R)R+R0(R&R%R,R-R.((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_netstat_route_aix�s0	+	+cC@s�tddkr6tjjjd�s,t�St�SnEtddkrMt�Stddkrdt�Stddkr{t	�St
d	��d
S(u�
    Return information on open ports and states

    .. note::
        On BSD minions, the output contains PID info (where available) for each
        netstat entry, fetched from sockstat/fstat output.

    .. versionchanged:: 2014.1.4
        Added support for OpenBSD, FreeBSD, and NetBSD

    .. versionchanged:: 2015.8.0
        Added support for SunOS

    .. versionchanged:: 2016.11.4
        Added support for AIX

    CLI Example:

    .. code-block:: bash

        salt '*' network.netstat
    ukerneluLinuxunetstatuOpenBSDuFreeBSDuNetBSDuSunOSuAIXu"Not yet supported on this platformN(uOpenBSDuFreeBSDuNetBSD(RRRtpathtwhichR9R/RfRiRlR(((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytnetstat�s
cC@stddkr tjjj�Stddkri}x�t�D]�}|djd�s_q@n|ddkruq@nidj|d	jd�d
 �d6dj|d	jd�d
�d6dj|d
jd�d
 �d6dj|d
jd�d
�d6|t	|�d<q@W|Stddkr
i}x�t
�D]�}|djd�sTq5n|ddkrjq5nidj|d	jd�d
 �d6dj|d	jd�d
�d6dj|d
jd�d
 �d6dj|d
jd�d
�d6|t	|�d<q5W|SiSdS(u
    Return a dict containing information on all of the running TCP connections (currently linux and solaris only)

    .. versionchanged:: 2015.8.4

        Added support for SunOS

    CLI Example:

    .. code-block:: bash

        salt '*' network.active_tcp
    ukerneluLinuxuSunOSuprotoutcpustateuESTABLISHEDu.u
local-addressi����u
local_addru
local_porturemote-addressuremote_addruremote_portiuAIXN(RRRRt
active_tcpRiR*RCR)R0Rl(R&t
connection((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR|s:!!!6!!!6u
traceroutecC@s�g}djtjjj|��}td|�}tjjj�sXtjjj�rjdddg}n�tdd�}y�t	j
d|�d}tjd|�g}xF|D]>}y|j
t|��Wq�tk
r�|j
|�q�Xq�Wt|�dkr|j
d�ntjd|�Wn tk
rGdddg}nXx8|j�D]*}t}	d	|krvt}	n|jd
�r�t}	ntjjj�r|jd�r�t}	n|jd�r�t}	n|jd
�r�t}	n|jd�rt}	qn|	rtjd|�qUndtj|d�ksadtj|d�ksatdd0kr~yt	j
d|�d}
Wn'tk
r�t	j
d|�d}
nXtjd|
�t	j
dtj|
��}y�|
ddkr�i|
dd6dd6}nbi|
dd6|
dd6|
dd6}x8tdt|��D]!}
||
|d j|
d�<q;WWqYtk
rzi}qYXn�|ddkr�|dd!ks�|ddkr�|ddkr�|jd"�}t|�dkr|ddkrit|d�d6dd6}qYt|�d#kr�it|d�d6|dj�dd6|dj�djd$�d6t|dj�d�d%6t|dj�d�d&6t|d'j�d�d(6}qYi}n�|j�}t|�d)krSi	|dd6|dd6|dd6|d'd%6|d*d&6|d)d(6|dd+6|d#d,6|d-d.6}ni}|j
|�|sUtjd/|�qUqUW|S(1u
    Performs a traceroute to a 3rd party host

    .. versionchanged:: 2015.8.0
        Added support for SunOS

    .. versionchanged:: 2016.11.4
        Added support for AIX

    CLI Example:

    .. code-block:: bash

        salt '*' network.traceroute archlinux.org
    utraceroute {0}ucmd.runiutraceroute --versionu%.*[Vv]ersion (\d+)\.([\w\+]+)\.*(\w*)utraceroute_version_raw: %siutraceroute_version: %su u
tracerouteutrying to get source forusource should beuoutgoing MTUufragmentation requiredu#Skipping traceroute output line: %suDarwiniuFreeBSDukerneluSunOSuAIXu"\s*(\d*)\s+(.*)\s+\((.*)\)\s+(.*)$u\s*(\d*)\s+(\*\s+\*\s+\*)u
traceline: %su(\d+\.\d+)\s*msu* * *ucountu*uhostnameiuipums{0}iu  iu()ums1ums2iums3iiuping1uping2iuping3u'Cannot parse traceroute output line: %s(uSunOSuAIX(RRRRR R!R	tis_sunostis_aixR<tfindallRgtdebugR+RRAR0t
IndexErrorR(RRR*Rt	text_typeRRR)tstriptfloattwarn(R"R&R%R,ttraceroute_versiontversion_outtversion_rawttR-t	skip_linet	tracelinetdelaystresultRaR.((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt
traceroute:s�$


					

#

  "
!	
udigcC@s,djtjjj|��}td|�S(u�
    Performs a DNS lookup with dig

    CLI Example:

    .. code-block:: bash

        salt '*' network.dig archlinux.org
    udig {0}ucmd.run(RRRRR R!(R"R%((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytdig�suarpcC@sLi}tdd�}x/|j�D]!}|j�}t|�dkrMq#ntddkr�d|dkrsq#n|d||d<q#tdd	kr�|d
dks#|ddkr�q#n|d
||d<q#tdd
kr |d
dkr�q#n|djd�jd�||d<q#|djd�jd�||d<q#W|S(u�
    Return the arp table from the minion

    .. versionchanged:: 2015.8.0
        Added support for SunOS

    CLI Example:

    .. code-block:: bash

        salt '*' network.arp
    ucmd.runuarp -aniukerneluSunOSu:i����iuOpenBSDiuHostu(incomplete)uAIXubucketuThereu(u)i(ubucketuThere(R!R(R)R0RR�(R&R,R-R.((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytarp�s( '(cC@stjjj�S(u�
    Return a dictionary of information about all the interfaces on the minion

    CLI Example:

    .. code-block:: bash

        salt '*' network.interfaces
    (RRRt
interfaces(((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR��s
cC@stjjj|�S(u�
    Return the hardware address (a.k.a. MAC address) for a given interface

    CLI Example:

    .. code-block:: bash

        salt '*' network.hw_addr eth0
    (RRRthw_addr(tiface((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR�s
uhwaddrcC@stjjj|�S(u�
    Return the inet address for a given interface

    .. versionadded:: 2014.7.0

    CLI Example:

    .. code-block:: bash

        salt '*' network.interface eth0
    (RRRt	interface(R�((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR�scC@stjjj|�S(u�
    Return the inet address for a given interface

    .. versionadded:: 2014.7.0

    CLI Example:

    .. code-block:: bash

        salt '*' network.interface_ip eth0
    (RRRtinterface_ip(R�((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR�'scC@stjjj|�S(u�
    Returns a list of IPv4 subnets to which the host belongs

    CLI Example:

    .. code-block:: bash

        salt '*' network.subnets
        salt '*' network.subnets interfaces=eth1
    (RRRtsubnets(R�((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR�6scC@stjjj�S(u�
    Returns a list of IPv6 subnets to which the host belongs

    CLI Example:

    .. code-block:: bash

        salt '*' network.subnets
    (RRRtsubnets6(((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR�Ds
cC@stjjj|�S(u�
    Returns True if host is within specified subnet, otherwise False.

    CLI Example:

    .. code-block:: bash

        salt '*' network.in_subnet 10.0.0.0/16
    (RRRt	in_subnet(tcidr((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR�Qs
cC@stjjj||�S(u�
    Returns True if given IP is within specified subnet, otherwise False.

    CLI Example:

    .. code-block:: bash

        salt '*' network.ip_in_subnet 172.17.0.4 172.16.0.0/12
    (RRRR�(tip_addrR�((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytip_in_subnet^s
cC@s_idd6dd6}t|�}tj|�}tj|j�|d<tj|j�|d<|S(u�
    returns the network and subnet mask of a cidr addr

    .. versionadded:: 2016.3.0

    CLI Example:

    .. code-block:: bash

        salt '*' network.convert_cidr 172.31.0.0/16
    unetworkunetmaskN(R>tcalc_netRt
ip_networkRR�tnetwork_addresstnetmask(R�R&tnetwork_info((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyRnks

cC@stjjj||�S(uI
    Returns the CIDR of a subnet based on
    an IP address (CIDR notation supported)
    and optional netmask.

    CLI Example:

    .. code-block:: bash

        salt '*' network.calc_net 172.17.0.5 255.255.255.240
        salt '*' network.calc_net 2a02:f6e:a000:80:84d8:8332:7866:4e07/64

    .. versionadded:: 2015.8.0
    (RRRR�(R�R�((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR��scC@s�tjjjd|d|�}|rVg|D]'}tjjj||g�r+|^q+S|dkr�g|D]}t|�si|^qiS|dkr�g|D]}t|�r�|^q�S|SdS(u
    Returns a list of IPv4 addresses assigned to the host. 127.0.0.1 is
    ignored, unless 'include_loopback=True' is indicated. If 'interface' is
    provided, then only IP addresses from that interface will be returned.
    Providing a CIDR via 'cidr="10.0.0.0/8"' will return only the addresses
    which are within that subnet. If 'type' is 'public', then only public
    addresses will be returned. Ditto for 'type'='private'.

    CLI Example:

    .. code-block:: bash

        salt '*' network.ip_addrs
    R�tinclude_loopbackupublicuprivateN(RRRtip_addrsR�t
is_private(R�R�R�ttypetaddrsR5((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR��s	2##uipaddrscC@s^tjjjd|d|�}|rVg|D]'}tjjj||g�r+|^q+S|SdS(u�
    Returns a list of IPv6 addresses assigned to the host. ::1 is ignored,
    unless 'include_loopback=True' is indicated. If 'interface' is provided,
    then only IP addresses from that interface will be returned.
    Providing a CIDR via 'cidr="2000::/3"' will return only the addresses
    which are within that subnet.

    CLI Example:

    .. code-block:: bash

        salt '*' network.ip_addrs6
    R�R�N(RRRt	ip_addrs6R�(R�R�R�R�R5((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR��s
	2uipaddrs6cC@s
tj�S(ui
    Get hostname

    CLI Example:

    .. code-block:: bash

        salt '*' network.get_hostname
    (Rtgethostname(((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytget_hostname�scC@s
tj�S(ux
    Get fully qualified domain name

    CLI Example:

    .. code-block:: bash

        salt '*' network.get_fqdn
    (Rtgetfqdn(((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytget_fqdn�scC@s^|dkrtStjjjd�p7tjjjd�}tjjj�r�tjjj�rddntjjjd�}tjjjd�}n|j	d�rEt
ddj|��}d|d	kr|d
}xl|j�D]8}|j
d�}d|dkr�|d
j�}q�q�Wq�tjdj|��t
d�}n>tjjj�sftj�}nt
d|�j
d�d}|j	d�r�t
ddj||��}|d	dkr8tjdj||d��tSnVtjjj�st
ddj||��n't
ddj||j
d�d��tjjjdd��5}g|j�D]}	tjjj|	�^q`}
WdQXtjjjdd���}x�|
D]�}|j
�}yY|||j|�<tjjj�r|j
d�d||j|j
d�d�<nWntk
r'nX|jtjjjdj|�d��q�WWdQXtdd kr�tjjjd!d��5}g|j�D]}	tjjj|	�^q�}
WdQXtjjjd!d���}x�|
D]�}|jd"�r\|j
d#d
�d
j�}tjjj |�}|jtjjjd$jtjjj!|�|���q�|jtjjj|��q�WWdQXntdd1krLtjjjd'd��'}|jtjjj|d��WdQXtd(d)kr�tjjj|�}d*}|d+j|�7}t
d|�d	dkrIt"d,j|���qIq�nTtdd-kr�tjjjd.d��'}|jtjjj|d��WdQXntjjj�rZtjjjd/d��4}|jtjjj|j
d�dd��WdQXtjjjd0d��=}|jtjjjdj|j
d�d
�d��WdQXnt#S(2u�
    Modify hostname

    .. versionchanged:: 2015.8.0
        Added support for SunOS (Solaris 10, Illumos, SmartOS)

    CLI Example:

    .. code-block:: bash

        salt '*' network.mod_hostname master.saltstack.com
    uhostnamectluhostnameu/usr/bin/unameuunameucheck-hostnameucmd.run_allu
{0} statusiuretcodeustdoutu:uStatic hostnameiu{0} was unable to get hostnameunetwork.get_hostnameucmd.runu i����u{0} set-hostname {1}u*{0} was unable to set hostname. Error: {1}ustderru{0} {1}u
{0} -S {1}u.u
/etc/hostsurNuwu	u
u	os_familyuRedHatu/etc/sysconfig/networkuHOSTNAMEu=uHOSTNAME={1}{0}{1}
uDebianu	NILinuxRTu
/etc/hostnameulsb_distrib_idunilrtu/usr/local/natinst/bin/nirtcfgu; --set section=SystemSettings,token='Host_Name',value='{0}'uCouldn't set hostname to: {0}
uOpenBSDu/etc/mynameu
/etc/nodenameu/etc/defaultdomain(uDebianu	NILinuxRT($R>RRRRyRzR	R~t
is_smartostendswithR!RR(R)R�RgR�RR�tfilestfopent	readlineststringutilst
to_unicodetindexRAtwritetto_strRCRR*trstript	is_quotedtdequoteRR(thostnamethostname_cmdt	uname_cmdtcheck_hostname_cmdR�R,R-t
o_hostnametfp_t_lthost_ctfh_R"t	network_ctnettold_hostnamet
quote_typetstr_hostnametnirtcfg_cmd((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytmod_hostname�s�*-

'1
4
31
)&)!-cK@s�idd6dd6}|s2t|d<d|d<|S|sPt|d<d|d<|S|jdd�}|jdd	�}|jd
d�}tjjjj|�s�tjjjj|�r�|}ndj	tjj
j|��}y�|dkr�tj
}ntj}d}|rF|d
kr%tj}	qL|dkr=tj}	qLd}	nd}	tj|||	d|�d\}}
}}}
Wn8tjk
r�t|d<dj	|||�|d<|SXy�tj||
|�}|j|�|dkrPtj�}|jtjj�jd��|j�}|j||
�|jd�\}}|j�n|j|
�|jd�Wn>t k
r�}t|d<dj	||
d||�|d<|SXt!|d<dj	||
d||�|d<|S(u�
    Test connectivity to a host using a particular
    port from the minion.

    .. versionadded:: 2014.7.0

    CLI Example:

    .. code-block:: bash

        salt '*' network.connect archlinux.org 80

        salt '*' network.connect archlinux.org 80 timeout=3

        salt '*' network.connect archlinux.org 80 timeout=3 family=ipv4

        salt '*' network.connect google-public-dns-a.google.com port=53 proto=udp timeout=3
    uresultuucommentu$Required argument, host, is missing.u$Required argument, port, is missing.uprotoutcputimeoutiufamilyu{0}uudpuipv4uipv6iu*Unable to resolve host {0} on {1} port {2}u%si�iu.Unable to connect to {0} ({1}) on {2} port {3}u3Successfully connected to {0} ({1}) on {2} port {3}N("R>RRsRRtvalidateR�t	ipv4_addrt	ipv6_addrRRR RtSOL_UDPtSOL_TCPRtAF_INET6tgetaddrinfotgaierrort
settimeoutthashlibtmd5tupdatetdatetimetnowtstrftimet	hexdigestRtrecvfromtclosetconnecttshutdownt	ExceptionR(R"tporttkwargsR&RPR#tfamilytaddresst__protot__familytsocktypet_prototgarbaget_addresstskttmd5htmsgtrecvtsvrtexc((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR�ish





0			2




 
 cC@stj|�jS(u�
    Check if the given IP address is a private address

    .. versionadded:: 2014.7.0
    .. versionchanged:: 2015.8.0
        IPv6 support

    CLI Example:

    .. code-block:: bash

        salt '*' network.is_private 10.0.0.3
    (Rt
ip_addressR�(R�((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR��scC@stj|�jS(u�
    Check if the given IP address is a loopback address

    .. versionadded:: 2014.7.0
    .. versionchanged:: 2015.8.0
        IPv6 support

    CLI Example:

    .. code-block:: bash

        salt '*' network.is_loopback 127.0.0.1
    (RR�tis_loopback(R�((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR��scC@stj|�jS(u�
    Returns the reversed IP address

    .. versionchanged:: 2015.8.0
        IPv6 support

    CLI Example:

    .. code-block:: bash

        salt '*' network.reverse_ip 172.17.0.4
    (RR�treverse_pointer(R�((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt
reverse_ip�s
c	C@s2itd6}dj|�}td|�}tjd�}d}x�|j�D]�}|j|�}|r�t|jd��||jd�j	�j
dd	�|<t|d<qN|jd
�r�d}qN|jd�rNd
}qNqNW|ds.|j
�}|djd�r!dj|d�}n||d<n|S(uC
    Return network interface buffer information using ethtool
    uresultu/sbin/ethtool -g {0}ucmd.runu^(.+):\s+(\d+)$umax-iiu u-u	maximums:u-maxu	settings:uiush:ucomment(RRR!R<R=R(R?RtgrouptlowertreplaceRR�R)RC(	R�R&R%R,tpattsuffixR-trestparts((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_get_bufsize_linux�s(
8
	


cC@s3tddkr/tjjd�r/t|�SniS(u�
    Return network buffer sizes as a dict (currently linux only)

    CLI Example:

    .. code-block:: bash

        salt '*' network.get_bufsize eth0
    ukerneluLinuxu
/sbin/ethtool(RtosRytexistsR�(R�((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytget_bufsizes

c
O@sitd6dd6}d|}|s(|S|reddjg|D]}tj|�^q>�|d<|Sd}xWdd	d
dgD]C}|j|�}|d
k	r~|d|dtj|�7}q~q~W|s�|S||7}td|�}	|	r�|	|d<n|j�|d<t|d<|S(u=
    Modify network interface buffer sizes using ethtool
    uresultu?Requires rx=<val> tx==<val> rx-mini=<val> and/or rx-jumbo=<val>ucommentu/sbin/ethtool -G uUnknown arguments: u uurxutxurx-miniurx-jumboucmd.runN(	RRCRR�RsR>R!R�R(
R�targsR�R&R%titemteargstkwtvalueR,((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt_mod_bufsize_linux's.


'&


cO@s9tddkr5tjjd�r5t|||�SntS(u�
    Modify network interface buffers (currently linux only)

    CLI Example:

    .. code-block:: bash

        salt '*' network.mod_bufsize tx=<val> rx=<val> rx-mini=<val> rx-jumbo=<val>
    ukerneluLinuxu
/sbin/ethtool(RR�RyR�RR(R�R�R�((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytmod_bufsizeEs
cC@sL|dkr<|dkr<|dk	r<tdj|���ntddkrytjjjd�smt�}qt	�}n�tddkr�t
�}n|tddkr�t�}n`tddkr�t�}nDtddkr�t
�}n(tddkrt�}ntd��|s|Sg|D]}|d|kr"|^q"}|SdS(u.
    Return currently configured routes from routing table

    .. versionchanged:: 2015.8.0
        Added support for SunOS (Solaris 10, Illumos, SmartOS)

    .. versionchanged:: 2016.11.4
        Added support for AIX

    CLI Example:

    .. code-block:: bash

        salt '*' network.routes
    uinetuinet6uInvalid address family {0}ukerneluLinuxunetstatuSunOSuosuFreeBSDuMacOSuDarwinuNetBSDuOpenBSDuAIXu"Not yet supported on this platformuaddr_familyN(uFreeBSDuMacOSuDarwin(uNetBSD(uOpenBSD(uAIX(R>RRRRRRyRzRrRmRwRtRuRvRx(R�troutes_trouteR&((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytroutesVs*$)cC@sm|dkr<|dkr<|dk	r<tdj|���nt�}i}tddkr~ddg|d<ddg|d<nItd	dks�tddkr�dg|d<dg|d<ntd��g}x�|D]�}|r-|d||kretddkr|d|krq�n|j|�qeq�|d|dksU|d|dkr�|j|�q�q�W|S(u*
    Return default route(s) from routing table

    .. versionchanged:: 2015.8.0
        Added support for SunOS (Solaris 10, Illumos, SmartOS)

    .. versionchanged:: 2016.11.4
        Added support for AIX

    CLI Example:

    .. code-block:: bash

        salt '*' network.default_route
    uinetuinet6uInvalid address family {0}ukerneluLinuxu0.0.0.0udefaultu::/0uosuFreeBSDuNetBSDuOpenBSDuMacOSuDarwinuSunOSuAIXu"Not yet supported on this platformudestinationuaddr_familyN(uFreeBSDuNetBSDuOpenBSDuMacOSuDarwin(uSunOSuAIX(R>RRRRR+(R�t_routest
default_routeR&R((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyR�s.$	

 cC@stddkr�dj|�}td|dt�}tjd�}|j|j�d�}i|d6|jd	�d	6|jd
�d
6|jd�d6}|Stddkr�d
j|�}td|dt	�}i|d6dd	6dd
6dd6}x�|j�D]�}|jd�}d|dkr>|dj�|d<nd	|dkre|dj�|d	<nd
|dkr|dj�|d
<t
jjj|dj��|d<qqW|Stddkr�dj|�}td|dt	�}i|d6dd	6dd
6dd6}x�|j�D]�}|jd�}d|dkrW|dj�|d<nd	|dkr~|dj�|d	<nd
|dkr�|dj�|d
<nd|dkr|dj�|d<qqW|Stddkr�dj|�}td|dt	�}i|d6dd	6dd
6dd6}x�|j�D]�}|jd�}d|dkrt|dj�|d<nd	|dkr�|dj�|d	<nd
|dkr�|dj�|d
<nd|dkr8|dj�|d<q8q8W|Std��dS(ud
    Return routing information for given destination ip

    .. versionadded:: 2015.5.3

    .. versionchanged:: 2015.8.0
        Added support for SunOS (Solaris 10, Illumos, SmartOS)
        Added support for OpenBSD

    .. versionchanged:: 2016.11.4
        Added support for AIX

    CLI Example::

        salt '*' network.get_route 10.10.10.10
    ukerneluLinuxuip route get {0}ucmd.runRRu`(via\s+(?P<gateway>[\w\.:]+))?\s+dev\s+(?P<interface>[\w\.\:\-]+)\s+.*src\s+(?P<source>[\w\.:]+)iudestinationugatewayu	interfaceusourceuSunOSu/usr/sbin/route -n get {0}u:uroute toiuOpenBSDuroute -n get {0}u
if addressuAIXuinterf addru"Not yet supported on this platformN(RRR!RR<R=tsearchR(R�RR>R)R�RRRR�R(tipR%R,tregexptmR&R-((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt	get_route�s�	
*


cC@s�t�}g}tj|�}t|�}x�tj|�D]w\}}d|kr:x\|dD]M}|dd|!|kr]d|kr�|j|d�q�|j|�q]q]Wq:q:W|S(u�
    Retrieve the interface name from a specific CIDR

    .. versionadded:: 2016.11.0

    CLI Example:

    .. code-block:: bash

        salt '*' network.ifacestartswith 10.0
    uinetuaddressiulabel(R�RR�R0RZR+(R�tnet_listt	intfnamestpatterntsizetifnametifvaltinet((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytifacestartswith8s	cC@s?|jd�}g|D]}dt|�^q}dj|�S(u�
    Retrieve the hexadecimal representation of an IP address

    .. versionadded:: 2016.11.0

    CLI Example:

    .. code-block:: bash

        salt '*' network.iphexval 10.0.0.1
    u.u%02Xu(R)RRC(R
taR;thexval((s8/usr/lib/python2.7/site-packages/salt/modules/network.pytiphexvalSs#(]t__doc__t
__future__RRRR�R�tloggingR<R�Rtsalt.utils.decorators.pathRtsalt.utils.functoolstsalt.utils.filestsalt.utils.networktsalt.utils.pathtsalt.utils.platformtsalt.utils.stringutilstsalt.utils.validate.nettsalt.exceptionsRtsalt.extRtsalt.ext.six.movesRtsalt._compatRt	getLoggert__name__RgR
RRR'R/R9RQRSRURfRiRlRmRrRtRuRvRwRxR{R|Rt
decoratorsRyRzR�R�R�R�R�t	functoolstalias_functionthwaddrR�R�R>R�R�R�R�RnR�R�tipaddrsR�tipaddrs6R�R�R�R�R�R�R�R�R�RRRRR
RR(((s8/usr/lib/python2.7/site-packages/salt/modules/network.pyt<module>s�	
.	!	9	/			M	!	/	)	`	'					%	2!�!!&	
				
	
	
				�_							,/	�	

Zerion Mini Shell 1.0