HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/ilo.cpython-310.pyc
o

�N�g�?�@s�dZddlZddlZddlZddlmmZddlZ	e�
e�Zdd�Z
dd�Zdd�Zd3d
d�Zd4d
d�Zdd�Zdd�Zd5dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Z d.d/�Z!d6d1d2�Z"dS)7zO
Manage HP ILO

:depends: hponcfg (SmartStart Scripting Toolkit Linux Edition)
�NcCstjj�d�r	dSdS)z.
    Make sure hponcfg tool is accessible
    ZhponcfgT)FzGilo execution module not loaded: the hponcfg binary is not in the path.)�salt�utils�path�which�rr�D/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/ilo.py�__virtual__src	Cs�|�dd�ii}d}tj�tdd�}tj�|�st�|�tj||t	t�
��dddd	��}|j}|�|�Wd
�n1sAwYt
dd|���}t
d
|�|ddkrv|d��D]}|�d�rsd|�d�diSqadSzLt�d�|d��dd���D]8}||�dd��|jd�r�||�dd��|jdt	|�|ji�|d7}q�||�dd��|j|ji�q�W|Sty�YdSw)z
    Execute ilom commands
    �_� rZcachedir�tmpz.xml�wF)�dir�prefix�suffix�mode�deleteNzcmd.run_allzhponcfg -f zfile.remove�retcode�stderrz
     MESSAGE=ZFailed�=�����stdout��T)�replace�osr�joinZ__opts__�isdir�mkdir�tempfileZNamedTemporaryFile�str�getpid�name�writeZ__salt__�
splitlines�
startswith�split�ETZ
fromstring�get�tag�updateZattrib�SyntaxError)	r"Zxml�retZid_numZtmp_dirZfhZtmpfilename�cmd�irrr�
__execute_cmdsJ
��

�$�
 ���r/cC�d}td|�S)zp
    Show global settings

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.global_settings
    a,<!-- Sample file for Get Global command -->
              <RIBCL VERSION="2.0">
                 <LOGIN USER_LOGIN="x" PASSWORD="x">
                   <RIB_INFO MODE="read">
                     <GET_GLOBAL_SETTINGS />
                   </RIB_INFO>
                 </LOGIN>
               </RIBCL>ZGlobal_Settings�r/��_xmlrrr�global_settingsMs

	r4�PcC�2t�}|ddd|krdSd�|�}td|�S)z�
    Configure the port HTTP should listen on

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.set_http_port 8080
    �Global Settings�	HTTP_PORT�VALUETaS<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <RIB_INFO MODE="write">
                    <MOD_GLOBAL_SETTINGS>
                      <HTTP_PORT value="{}"/>
                    </MOD_GLOBAL_SETTINGS>
                  </RIB_INFO>
                </LOGIN>
              </RIBCL>Z
Set_HTTP_Port�r4�formatr/��port�_currentr3rrr�
set_http_portc�
��
r?�cCr6)z�
    Configure the port HTTPS should listen on

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.set_https_port 4334
    r7r8r9TaT<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <RIB_INFO MODE="write">
                    <MOD_GLOBAL_SETTINGS>
                      <HTTPS_PORT value="{}"/>
                    </MOD_GLOBAL_SETTINGS>
                  </RIB_INFO>
                </LOGIN>
              </RIBCL>ZSet_HTTPS_Portr:r<rrr�set_https_port�r@rBcC�,t�}|ddddkrdSd}td|�S)zl
    Enable the SSH daemon

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.enable_ssh
    r7�
SSH_STATUSr9�YTaU<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <RIB_INFO MODE="write">
                    <MOD_GLOBAL_SETTINGS>
                      <SSH_STATUS value="Yes"/>
                    </MOD_GLOBAL_SETTINGS>
                  </RIB_INFO>
                </LOGIN>
              </RIBCL>Z
Enable_SSH�r4r/�r>r3rrr�
enable_ssh��



rHcCrC)zn
    Disable the SSH daemon

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.disable_ssh
    r7rDr9�NTaT<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <RIB_INFO MODE="write">
                    <MOD_GLOBAL_SETTINGS>
                      <SSH_STATUS value="No"/>
                    </MOD_GLOBAL_SETTINGS>
                  </RIB_INFO>
                </LOGIN>
              </RIBCL>ZDisable_SSHrFrGrrr�disable_ssh�rIrK�cCr6)z
    Enable SSH on a user defined port

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.set_ssh_port 2222
    r7ZSSH_PORTr9TaS<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <RIB_INFO MODE="write">
                    <MOD_GLOBAL_SETTINGS>
                       <SSH_PORT value="{}"/>
                    </MOD_GLOBAL_SETTINGS>
                  </RIB_INFO>
                </LOGIN>
              </RIBCL>ZConfigure_SSH_Portr:r<rrr�set_ssh_port�r@rMcC�d�|�}td|�S)a9
    Configure SSH public keys for specific users

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.set_ssh_key "ssh-dss AAAAB3NzaC1kc3MAAACBA... damian"

    The SSH public key needs to be DSA and the last argument in the key needs
    to be the username (case-senstive) of the ILO username.
    a�<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <RIB_INFO MODE="write">
                    <IMPORT_SSH_KEY>
                      -----BEGIN SSH KEY-----
                      {}
                      -----END SSH KEY-----
                    </IMPORT_SSH_KEY>
                  </RIB_INFO>
                </LOGIN>
              </RIBCL>ZImport_SSH_Publickey�r;r/)Z
public_keyr3rrr�set_ssh_key�s

��
rPcCrN)z�
    Delete a users SSH key from the ILO

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.delete_user_sshkey damian
    aH<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="admin" PASSWORD="admin123">
                  <USER_INFO MODE="write">
                    <MOD_USER USER_LOGIN="{}">
                      <DEL_USERS_SSH_KEY/>
                    </MOD_USER>
                  </USER_INFO>
                </LOGIN>
              </RIBCL>ZDelete_user_SSH_keyrO��usernamer3rrr�delete_ssh_keys
��
rScCr0)ze
    List all users

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.list_users
    z�<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="x" PASSWORD="x">
                    <USER_INFO MODE="read">
                      <GET_ALL_USERS />
                    </USER_INFO>
                </LOGIN>
              </RIBCL>Z	All_usersr1r2rrr�
list_users,�

rTcCr0)zt
    List all users in detail

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.list_users_info
    z�<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <USER_INFO MODE="read">
                    <GET_ALL_USER_INFO />
                  </USER_INFO>
                </LOGIN>
              </RIBCL>ZAll_users_infor1r2rrr�list_users_infoArUrVc	s4gd��d�||d��fdd�|D���}td|�S)a�
    Create user

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.create_user damian secretagent VIRTUAL_MEDIA_PRIV

    If no permissions are specify the user will only have a read-only account.

    Supported privelges:

    * ADMIN_PRIV
      Enables the user to administer user accounts.

    * REMOTE_CONS_PRIV
      Enables the user to access the Remote Console functionality.

    * RESET_SERVER_PRIV
      Enables the user to remotely manipulate the server power setting.

    * VIRTUAL_MEDIA_PRIV
      Enables the user permission to access the virtual media functionality.

    * CONFIG_ILO_PRIV
      Enables the user to configure iLO settings.
    )Z
ADMIN_PRIVZREMOTE_CONS_PRIVZRESET_SERVER_PRIVZVIRTUAL_MEDIA_PRIVZCONFIG_ILO_PRIVa<RIBCL version="2.2">
                <LOGIN USER_LOGIN="x" PASSWORD="y">
                  <RIB_INFO mode="write">
                    <MOD_GLOBAL_SETTINGS>
                      <MIN_PASSWORD VALUE="7"/>
                    </MOD_GLOBAL_SETTINGS>
                  </RIB_INFO>

                 <USER_INFO MODE="write">
                   <ADD_USER USER_NAME="{0}" USER_LOGIN="{0}" PASSWORD="{1}">
                     {2}
                   </ADD_USER>
                 </USER_INFO>
               </LOGIN>
             </RIBCL>�
cs(g|]}|���vrd|���d��qS)�<z
 value="Y" />)�upper)�.0r.�Z_privrr�
<listcomp>�s(zcreate_user.<locals>.<listcomp>ZCreate_user)r;rr/)r"�passwordZ
privilegesr3rr[r�create_userVs���
r^cCrN)zl
    Delete a user

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.delete_user damian
    a<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <USER_INFO MODE="write">
                    <DELETE_USER USER_LOGIN="{}" />
                  </USER_INFO>
                </LOGIN>
              </RIBCL>ZDelete_userrOrQrrr�delete_user��
��

r_cCrN)z�
    Returns local user information, excluding the password

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.get_user damian
    a<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <USER_INFO MODE="read">
                    <GET_USER USER_LOGIN="{}" />
                  </USER_INFO>
                </LOGIN>
              </RIBCL>Z	User_InforOrQrrr�get_user�r`racC�d�||�}td|�S)zz
    Change a username

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.change_username damian diana
    a�<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <USER_INFO MODE="write">
                    <MOD_USER USER_LOGIN="{0}">
                      <USER_NAME value="{1}"/>
                      <USER_LOGIN value="{1}"/>
                    </MOD_USER>
                  </USER_INFO>
                </LOGIN>
              </RIBCL>ZChange_usernamerO)Zold_usernameZnew_usernamer3rrr�change_username�s
	��

rccCrb)z�
    Reset a users password

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.change_password damianMyerscough
    aN<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <USER_INFO MODE="write">
                    <MOD_USER USER_LOGIN="{}">
                      <PASSWORD value="{}"/>
                    </MOD_USER>
                  </USER_INFO>
                </LOGIN>
              </RIBCL>ZChange_passwordrO)rRr]r3rrr�change_password�s
��
rdcCr0)zu
    Grab the current network settings

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.network
    z�<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <RIB_INFO MODE="read">
                    <GET_NETWORK_SETTINGS/>
                  </RIB_INFO>
                </LOGIN>
              </RIBCL>ZNetwork_Settingsr1r2rrr�network�rUrecCs^t�}||dddvr#||dddvr#||dddvr#dSd�|||�}td|�S)	z�
    Configure Network Interface

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.configure_network [IP ADDRESS] [NETMASK] [GATEWAY]
    �Network SettingsZ
IP_ADDRESSr9ZSUBNET_MASKZGATEWAY_IP_ADDRESSTa�<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <RIB_INFO MODE="write">
                    <MOD_NETWORK_SETTINGS>
                      <IP_ADDRESS value="{}"/>
                      <SUBNET_MASK value="{}"/>
                      <GATEWAY_IP_ADDRESS value="{}"/>
                    </MOD_NETWORK_SETTINGS>
                  </RIB_INFO>
                </LOGIN>
              </RIBCL> ZConfigure_Network)rer;r/)�ip�netmaskZgateway�currentr3rrr�configure_network
s

��
rjcCrC)zc
    Enable DHCP

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.enable_dhcp
    rf�DHCP_ENABLEr9rETaX<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <RIB_INFO MODE="write">
                    <MOD_NETWORK_SETTINGS>
                      <DHCP_ENABLE value="Yes"/>
                    </MOD_NETWORK_SETTINGS>
                  </RIB_INFO>
                </LOGIN>
              </RIBCL>ZEnable_DHCP�rer/�rir3rrr�enable_dhcp/rIrncCrC)ze
    Disable DHCP

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.disable_dhcp
    rfrkr9rJTaW<RIBCL VERSION="2.0">
                <LOGIN USER_LOGIN="adminname" PASSWORD="password">
                  <RIB_INFO MODE="write">
                    <MOD_NETWORK_SETTINGS>
                      <DHCP_ENABLE value="No"/>
                    </MOD_NETWORK_SETTINGS>
                  </RIB_INFO>
                </LOGIN>
              </RIBCL>ZDisable_DHCPrlrmrrr�disable_dhcpKrIro�cCsd�|||�}td|�S)z�
    Configure SNMP

    CLI Example:

    .. code-block:: bash

        salt '*' ilo.configure_snmp [COMMUNITY STRING] [SNMP PORT] [SNMP TRAP PORT]
    aF<RIBCL VERSION="2.2">
                <LOGIN USER_LOGIN="x" PASSWORD="y">
                  <RIB_INFO mode="write">
                    <MOD_GLOBAL_SETTINGS>
                      <SNMP_ACCESS_ENABLED VALUE="Yes"/>
                      <SNMP_PORT VALUE="{}"/>
                      <SNMP_TRAP_PORT VALUE="{}"/>
                    </MOD_GLOBAL_SETTINGS>

                   <MOD_SNMP_IM_SETTINGS>
                     <SNMP_ADDRESS_1 VALUE=""/>
                     <SNMP_ADDRESS_1_ROCOMMUNITY VALUE="{}"/>
                     <SNMP_ADDRESS_1_TRAPCOMMUNITY VERSION="" VALUE=""/>
                     <RIB_TRAPS VALUE="Y"/>
                     <OS_TRAPS VALUE="Y"/>
                     <SNMP_PASSTHROUGH_STATUS VALUE="N"/>
                  </MOD_SNMP_IM_SETTINGS>
                </RIB_INFO>
              </LOGIN>
           </RIBCL>ZConfigure_SNMPrO)Z	communityZ	snmp_portZ
snmp_trapportr3rrr�configure_snmpgs
��
rq)r5)rA)rL)rprp)#�__doc__�loggingrrZxml.etree.ElementTreeZetreeZElementTreer'Zsalt.utils.pathr�	getLogger�__name__�logrr/r4r?rBrHrKrMrPrSrTrVr^r_rarcrdrerjrnrorqrrrr�<module>s:

/


>%