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__/drac.cpython-310.pyc
o

�N�gj+�@s�dZddlZddlZe�e�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zd,dd�Z
dd�Zdd�Zd-dd�Zd-dd�Zd-dd�Zd-dd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�ZdS).z
Manage Dell DRAC
�NcCstjj�d�r	dSdS)NZracadmT)FzFThe drac execution module cannot be loaded: racadm binary not in path.)�salt�utils�path�which�rr�E/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/drac.py�__virtual__srcCs|i}d}|��D]3}|��r)d|vr)||vr(||�tdd�|�d�D�g��q|��dd�}||vr;|r;i||<q|S)z 
    Parse Dell DRAC output
    ��=cSsg|]}|���qSr)�strip)�.0Zproprrr�
<listcomp> sz __parse_drac.<locals>.<listcomp>N���)�
splitlines�rstrip�update�dict�splitr)�output�drac�section�irrr�__parse_dracs$��rcCs6tdd|���}|ddkrt�d|d�dSdS)z
    Execute rac commands
    �cmd.run_allzracadm �retcoder� racadm return an exit code '%s'.FT)�__salt__�log�warning)Zcommand�cmdrrr�
__execute_cmd)s
r cC�4tdd�}|ddkrt�d|d�t|d�S)zs
    Return System information

    CLI Example:

    .. code-block:: bash

        salt dell drac.system_info
    rzracadm getsysinforrr�stdout�rrrr�rrrr�system_info6s
r%cCr!)zw
    Return Network Configuration

    CLI Example:

    .. code-block:: bash

        salt dell drac.network_info
    rzracadm getniccfgrrrr"r#r$rrr�network_infoHsr&cGsXt|�dkr
t�d�dStdt|�d�D]}td|�d||d���s)dSqdS)z�
    Configure the nameservers on the DRAC

    CLI Example:

    .. code-block:: bash

        salt dell drac.nameservers [NAMESERVERS]
        salt dell drac.nameservers ns1.example.com ns2.example.com
    �z$racadm only supports two nameserversF�z*config -g cfgLanNetworking -o cfgDNSServer� T)�lenrr�ranger )�nsrrrr�nameservers[s
��r-TcCs"|r
td�r
td|���Std�S)ak
    Configure syslog remote logging, by default syslog will automatically be
    enabled if a server is specified. However, if you want to disable syslog
    you will need to specify a server followed by False

    CLI Example:

    .. code-block:: bash

        salt dell drac.syslog [SYSLOG IP] [ENABLE/DISABLE]
        salt dell drac.syslog 0.0.0.0 False
    z3config -g cfgRemoteHosts -o cfgRhostsSyslogEnable 1z3config -g cfgRemoteHosts -o cfgRhostsSyslogServer1 z3config -g cfgRemoteHosts -o cfgRhostsSyslogEnable 0�r )Zserver�enablerrr�syslogss

�r0cCs|rtd�Std�S)z�
    Enable/Disable email alerts

    CLI Example:

    .. code-block:: bash

        salt dell drac.email_alerts True
        salt dell drac.email_alerts False
    z5config -g cfgEmailAlert -o cfgEmailAlertEnable -i 1 1z5config -g cfgEmailAlert -o cfgEmailAlertEnable -i 1 0r.)�actionrrr�email_alerts�sr2cCs�i}d}tdd�D]L}tdd|���}|ddkr"t�d|d�|d	��D],}|�d
�s0q(|�d�\}}|�d�rK|��}|rId
|i||<q(n
||�||i�q(q	|S)zl
    List all DRAC users

    CLI Example:

    .. code-block:: bash

        salt dell drac.list_users
    r	r(�rz$racadm getconfig -g cfgUserAdmin -i rrrr"Zcfgr
ZcfgUserAdminUserName�index)	r+rrrr�
startswithrrr)�usersZ	_username�idxr�user�key�valrrr�
list_users�s$


�r;cCs>|dur
t�}||d}|rtd|�d��St�d|�dS)z�
    Delete a user

    CLI Example:

    .. code-block:: bash

        salt dell drac.delete_user [USERNAME] [UID - optional]
        salt dell drac.delete_user diana 4
    Nr4�2config -g cfgUserAdmin -o cfgUserAdminUserName -i z ""�'%s' does not existF)r;r rr)�username�uidr8rrr�delete_user�s
�r@cCs>|dur
t�}||d}|rtd�||��St�d|�dS)z�
    Change users password

    CLI Example:

    .. code-block:: bash

        salt dell drac.change_password [USERNAME] [PASSWORD] [UID - optional]
        salt dell drac.change_password diana secret
    Nr4z7config -g cfgUserAdmin -o cfgUserAdminPassword -i {} {}r=F)r;r �formatrr)r>�passwordr?r8rrr�change_password�s��rCcCs�t�}|dur
t�}||vrt�d|�dS|��D]}|�||d�qttttdd��|�dd��	�}t
d	|�d
|���sHt||�dSt|||�sZt�d�t||�dSt
|||�slt�d�t||�dSt
d
|�d��s{t||�dSdS)a�
    Create user accounts

    CLI Example:

    .. code-block:: bash

        salt dell drac.create_user [USERNAME] [PASSWORD] [PRIVILEGES]
        salt dell drac.create_user diana secret login,test_alerts,clear_logs

    DRAC Privileges
      * login                   : Login to iDRAC
      * drac                    : Configure iDRAC
      * user_management         : Configure Users
      * clear_logs              : Clear Logs
      * server_control_commands : Execute Server Control Commands
      * console_redirection     : Access Console Redirection
      * virtual_media           : Access Virtual Media
      * test_alerts             : Test Alerts
      * debug_commands          : Execute Debug Commands
    Nz'%s' already existsFr4r'�T)�reverser<r)zunable to set user permissionszunable to set user passwordz0config -g cfgUserAdmin -o cfgUserAdminEnable -i z 1)�setr;rr�keys�add�sorted�listr+�popr r@�set_permissionsrC)r>rB�permissionsr6Z_uidsr7r?rrr�create_user�s4"�





rNc
Csxddddddddd	d
�	}d}|durt�}||d
}|�d�D]}|��}||vr3|t||d�7}q td�||��S)a�
    Configure users permissions

    CLI Example:

    .. code-block:: bash

        salt dell drac.set_permissions [USERNAME] [PRIVILEGES] [USER INDEX - optional]
        salt dell drac.set_permissions diana login,test_alerts,clear_logs 4

    DRAC Privileges
      * login                   : Login to iDRAC
      * drac                    : Configure iDRAC
      * user_management         : Configure Users
      * clear_logs              : Clear Logs
      * server_control_commands : Execute Server Control Commands
      * console_redirection     : Access Console Redirection
      * virtual_media           : Access Virtual Media
      * test_alerts             : Test Alerts
      * debug_commands          : Execute Debug Commands
    Z	0x0000001Z	0x0000002Z	0x0000004Z	0x0000008Z	0x0000010Z	0x0000020Z	0x0000040Z	0x0000080Z	0x0000100)	ZloginrZuser_managementZ
clear_logsZserver_control_commandsZconsole_redirectionZ
virtual_mediaZtest_alertsZdebug_commandsrNr4�,�z>config -g cfgUserAdmin -o cfgUserAdminPrivilege -i {} 0x{:08X})r;rr�intr rA)r>rMr?Z
privilegesZ
permissionr8r�permrrrrL6s0����rLcCstd|���S)z�
    Configure SNMP community string

    CLI Example:

    .. code-block:: bash

        salt dell drac.set_snmp [COMMUNITY]
        salt dell drac.set_snmp public
    z1config -g cfgOobSnmp -o cfgOobSnmpAgentCommunity r.)Z	communityrrr�set_snmpms�rScCstd|�d|�d|���S)z�
    Configure Network

    CLI Example:

    .. code-block:: bash

        salt dell drac.set_network [DRAC IP] [NETMASK] [GATEWAY]
        salt dell drac.set_network 192.168.0.2 255.255.255.0 192.168.0.1
    z
setniccfg -s r)r.)�ip�netmaskZgatewayrrr�set_network}srVcC�td�S)a
    Issues a power-cycle operation on the managed server. This action is
    similar to pressing the power button on the system's front panel to
    power down and then power up the system.

    CLI Example:

    .. code-block:: bash

        salt dell drac.server_reboot
    zserveraction powercycler.rrrr�
server_reboot�srXcCrW)z}
    Powers down the managed server.

    CLI Example:

    .. code-block:: bash

        salt dell drac.server_poweroff
    zserveraction powerdownr.rrrr�server_poweroff��
rYcCrW)zz
    Powers up the managed server.

    CLI Example:

    .. code-block:: bash

        salt dell drac.server_poweron
    zserveraction powerupr.rrrr�server_poweron�rZr[cCrW)z�
    Performs a reset (reboot) operation on the managed server.

    CLI Example:

    .. code-block:: bash

        salt dell drac.server_hardreset
    zserveraction hardresetr.rrrr�server_hardreset�rZr\cCs0td�rtd�r
tSt�d�dSt�d�dS)z�
    Configure server to PXE perform a one off PXE boot

    CLI Example:

    .. code-block:: bash

        salt dell drac.server_pxe
    z7config -g cfgServerInfo -o cfgServerFirstBootDevice PXEz.config -g cfgServerInfo -o cfgServerBootOnce 1zfailed to set boot orderFzfailed to configure PXE boot)r rXrrrrrr�
server_pxe�s


r])T)N)�__doc__�loggingZsalt.utils.pathr�	getLogger�__name__rrrr r%r&r-r0r2r;r@rCrNrLrSrVrXrYr[r\r]rrrr�<module>s0




&


?7