mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-07-11 07:11:30 +00:00
* Support config snmpv1/2 community string for Mellanox switches during discovery phase * checking snmpversion defined in the switches table
99 lines
3.1 KiB
Bash
Executable File
99 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#the postscript to enable snmpd in ONIE compatible switches
|
|
|
|
if ! cat /etc/os-release |grep -i '^NAME=[ "]*Cumulus Linux[ "]*$' >/dev/null 2>&1 ; then
|
|
echo "This script is only supported on Cumulus OS in ONIE switch"
|
|
exit 2
|
|
fi
|
|
|
|
#define conf file
|
|
snmp_conf="/etc/snmp/snmpd.conf"
|
|
if [ ! -f "$snmp_conf" ]; then
|
|
echo "/etc/snmp/snmpd.conf doesn't not exist"
|
|
exit -1
|
|
fi
|
|
|
|
[ -f ${snmp_conf}.orig ] || cp $snmp_conf ${snmp_conf}.orig
|
|
|
|
#get snmp attribute
|
|
#NOTE: the length of SNMP Password has to be min=8
|
|
xCATSettingsSTART="xCAT settings START"
|
|
xCATSettingsEND="xCAT settings END"
|
|
xCATSettingsOID="xCAT customized"
|
|
xCATSettingsInfo="Entries between the START and END lines will be replaced each time by running enablesnmp"
|
|
snmpversion=$SNMPVERSION
|
|
snmpuser=$SNMPUSER
|
|
snmppwd=$SNMPPASSWD
|
|
snmppriv=$SNMPPRIV
|
|
snmpauth=$SNMPAUTH
|
|
snmpc=$SNMPC
|
|
community="public"
|
|
|
|
#Get cumulus orig conf file
|
|
grep "$xCATSettingsOID" $snmp_conf 2>&1 1> /dev/null
|
|
if [ $? -eq 0 ]; then
|
|
cp ${snmp_conf}.cumulus $snmp_conf
|
|
fi
|
|
|
|
grep "$xCATSettingsSTART" $snmp_conf 2>&1 1> /dev/null
|
|
if [ $? -eq 0 ]; then
|
|
#remove the previous snmp rule generated by xCAT
|
|
sed -i "/$xCATSettingsSTART/,/$xCATSettingsEND/ d" $snmp_conf
|
|
else
|
|
sed -i "/^\s*agentAddress/s/^/#/" $snmp_conf
|
|
sed -i '/agentAddress udp\:161\,udp6\:\[\:\:1\]\:161/s/^#//' $snmp_conf
|
|
sed -i "/view\s*systemonly\s*included\s*.1.3.6.1.2.1.17/s/^#//" $snmp_conf
|
|
sed -i "/pass_persist\s*.1.3.6.1.2.1.17\s*\/usr\/share\/snmp\/bridge_pp.py/s/^#//" $snmp_conf
|
|
fi
|
|
|
|
|
|
# Mark the start of xCAT section
|
|
echo "# $xCATSettingsSTART" >> $snmp_conf
|
|
echo "# $xCATSettingsInfo" >> $snmp_conf
|
|
|
|
if [[ "$snmpversion" =~ "3" ]]; then
|
|
#set up snmp version 3
|
|
if [ -n "$snmpuser" ] && [ -n "$snmpauth" ] && [ -n "$snmppwd" ]; then
|
|
len=${#snmppwd}
|
|
if [ $len -lt 8 ]; then
|
|
echo "SNMP v3 specification requires password to have a minimum of 8 characters"
|
|
echo "# $xCATSettingsEND" >> $snmp_conf
|
|
exit -1
|
|
fi
|
|
snmpauth=`echo $snmpauth | tr '[a-z]' '[A-Z]'`
|
|
if [ -n "$snmppriv" ]; then
|
|
snmppriv=`echo $snmppriv | tr '[a-z]' '[A-Z]'`
|
|
echo "createUser $snmpuser $snmpauth $snmppwd $snmppriv $snmppwd" >> $snmp_conf
|
|
echo "rwuser $snmpuser" >> $snmp_conf
|
|
else
|
|
echo "createUser $snmpuser $snmpauth $snmppwd" >> $snmp_conf
|
|
echo "rouser $snmpuser" >> $snmp_conf
|
|
fi
|
|
else
|
|
echo "Please define user/password/auth for SNMP v3 specification"
|
|
echo "# $xCATSettingsEND" >> $snmp_conf
|
|
exit -1
|
|
fi
|
|
elif [ -n "$snmppwd" ]; then
|
|
community=$snmppwd
|
|
elif [ -n "$snmpc" ]; then
|
|
community=$snmpc
|
|
fi
|
|
|
|
echo "rocommunity $community default" >> $snmp_conf
|
|
echo "rocommunity $community default -V systemonly" >> $snmp_conf
|
|
|
|
echo "# $xCATSettingsEND" >> $snmp_conf
|
|
|
|
#create snmpd restart conf file
|
|
mkdir -p /etc/systemd/system/snmpd.service.d
|
|
restart_conf="/etc/systemd/system/snmpd.service.d/restart.conf"
|
|
echo "[Service]" > $restart_conf
|
|
echo "Restart=always" >> $restart_conf
|
|
echo "RestartSec=60" >> $restart_conf
|
|
|
|
systemctl enable snmpd
|
|
systemctl restart snmpd
|
|
|