PATH:
usr
/
sbin
#!/usr/bin/bash # # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This file is part of the device-mapper-multipath package. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions # of the GNU General Public License v.2. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Simple editting of /etc/multipath.conf # This program was largely ripped off from lvmconf # unset ENABLE FIND FRIENDLY PROPERTY FOREIGN MODULE MULTIPATHD HAVE_DISABLE HAVE_WWID_DISABLE HAVE_FIND HAVE_BLACKLIST HAVE_EXCEPTIONS HAVE_DEFAULTS HAVE_FRIENDLY HAVE_PROPERTY HAVE_FOREIGN HAVE_MULTIPATHD HAVE_MODULE HAVE_OUTFILE SHOW_STATUS CHANGED_CONFIG WWID_LIST HAVE_OPTION OPTION_NAME OPTION_VALUE HAVE_RECHECK_WWID RECHECK_WWID DEFAULT_CONFIG="# device-mapper-multipath configuration file # For a complete list of the default configuration values, run either: # # multipath -t # or # # multipathd show config # For a list of configuration options with descriptions, see the # multipath.conf man page. defaults { user_friendly_names yes find_multipaths on }" CONFIGFILE="/etc/multipath.conf" OUTPUTFILE="/etc/multipath.conf" MULTIPATHDIR="/etc/multipath" TMPFILE="/etc/multipath/.multipath.conf.tmp" WWIDS=0 function usage { echo "usage: $0 <command>" echo "" echo "Commands:" echo "Enable: --enable " echo "Disable: --disable" echo "Only allow certain wwids (instead of enable): --allow <WWID>" echo "Set user_friendly_names (Default y): --user_friendly_names <y|n>" echo "Set find_multipaths (Default on): --find_multipaths <on|yes|y|off|no|n|strict|greedy|smart>" echo "Set default property blacklist (Default n): --property_blacklist <y|n>" echo "Set enable_foreign to show foreign devices (Default n): --enable_foreign <y|n>" echo "Set recheck_wwid (Defaut n): --recheck_wwid <y|n>" echo "Add/Change/Remove option in defaults section: --option <option_name>:<value>" echo "Load the dm-multipath modules on enable (Default y): --with_module <y|n>" echo "start/stop/reload multipathd (Default n): --with_multipathd <y|n>" echo "select output file (Default /etc/multipath.conf): --outfile <FILE>" echo "" } function add_wwid { INDEX=0 while [ "$INDEX" -lt "$WWIDS" ] ; do if [ "$1" = "${WWID_LIST[$INDEX]}" ] ; then return fi ((INDEX++)) done WWID_LIST[$WWIDS]="$1" ((WWIDS++)) } function get_dm_deps { shift 3 while [ -n "$1" -a -n "$2" ]; do MAJOR=$(echo $1 | tr -d '(,') MINOR=$(echo $2 | tr -d ')') UUID=`dmsetup info -c --noheadings -o uuid -j $MAJOR -m $MINOR 2> /dev/null` if [ -n "$UUID" ] ; then set_dm_wwid $UUID fi shift 2 done } function set_dm_wwid { if [[ "$1" =~ ^part[[:digit:]]+-mpath- ]] ; then add_wwid "${1##part*-mpath-}" elif [[ "$1" =~ ^mpath- ]] ; then add_wwid "${1##mpath-}" else get_dm_deps `dmsetup deps -u $1` fi } function set_wwid { UUID="" if [[ "$1" =~ ^[[:digit:]]+:[[:digit:]]+$ ]] ; then MAJOR=${1%%:*} MINOR=${1##*:} UUID=`dmsetup info -c --noheadings -o uuid -j $MAJOR -m $MINOR 2> /dev/null` else UUID=`dmsetup info -c --noheadings -o uuid $1 2> /dev/null` fi if [ -n "$UUID" ] ; then set_dm_wwid $UUID else add_wwid "$1" fi } function parse_args { while [ -n "$1" ]; do case $1 in --enable) ENABLE=1 shift ;; --disable) ENABLE=0 shift ;; --allow) ENABLE=2 if [ -n "$2" ]; then set_wwid $2 shift 2 else usage exit 1 fi ;; --user_friendly_names) if [ -n "$2" ]; then FRIENDLY=$2 shift 2 else usage exit 1 fi ;; --recheck_wwid) if [ -n "$2" ]; then RECHECK_WWID=$2 shift 2 else usage exit 1 fi ;; --find_multipaths) if [ -n "$2" ]; then FIND=$2 shift 2 else usage exit 1 fi ;; --property_blacklist) if [ -n "$2" ]; then PROPERTY=$2 shift 2 else usage exit 1 fi ;; --option) if [ -n "$2" ]; then OPTION_NAME=$(echo $2 | cut -s -f1 -d:) OPTION_VALUE=$(echo $2 | cut -s -f2 -d:) if [ -z "$OPTION_NAME" ]; then usage exit 1 fi shift 2 else usage exit 1 fi ;; --enable_foreign) if [ -n "$2" ]; then FOREIGN=$2 shift 2 else usage exit 1 fi ;; --with_module) if [ -n "$2" ]; then MODULE=$2 shift 2 else usage exit 1 fi ;; --with_multipathd) if [ -n "$2" ]; then MULTIPATHD=$2 shift 2 else usage exit 1 fi ;; --outfile) if [ -n "$2" ]; then OUTPUTFILE=$2 HAVE_OUTFILE=1 shift 2 else usage exit 1 fi ;; *) usage exit esac done } function validate_args { if [ "$ENABLE" = "0" ] && [ -n "$FRIENDLY" -o -n "$FIND" -o -n "$PROPERTY" -o -n "$MODULE" -o -n "$FOREIGN" -o -n "$OPTION_NAME" -o -n "$RECHECK_WWID" ]; then echo "ignoring extra parameters on disable" FRIENDLY="" FIND="" PROPERTY="" MODULE="" FOREIGN="" OPTION_NAME="" OPTION_VALUE="" RECHECK_WWID="" fi if [ -n "$FRIENDLY" ] && [ "$FRIENDLY" != "y" -a "$FRIENDLY" != "n" ]; then echo "--user_friendly_names must be either 'y' or 'n'" exit 1 fi if [ -n "$RECHECK_WWID" ] && [ "$RECHECK_WWID" != "y" -a "$RECHECK_WWID" != "n" ]; then echo "--recheck_wwid must be either 'y' or 'n'" exit 1 fi if [ "$FIND" = "y" ]; then FIND="on" elif [ "$FIND" = "n" ]; then FIND="off" elif [ -n "$FIND" ] && [ "$FIND" != "on" -a "$FIND" != "yes" -a "$FIND" != "off" -a "$FIND" != "no" -a "$FIND" != "strict" -a "$FIND" != "greedy" -a "$FIND" != "smart" ]; then echo "--find_multipaths must be one of 'on' 'yes' 'y' 'off' 'no' 'n' 'strict' 'greedy' or 'smart'" exit 1 fi if [ -n "$PROPERTY" ] && [ "$PROPERTY" != "y" -a "$PROPERTY" != "n" ]; then echo "--property_blacklist must be either 'y' or 'n'" exit 1 fi if [ -n "$FOREIGN" ] && [ "$FOREIGN" != "y" -a "$FOREIGN" != "n" ]; then echo "--enable_foreign must be either 'y' or 'n'" exit 1 fi if [ -n "$OPTION_NAME" ]; then if [[ $OPTION_NAME =~ [[:space:]]|#|\"|!|\{|\} ]]; then echo "--option name \"$OPTION_NAME\" is invalid" exit 1 elif [[ $OPTION_VALUE =~ \"|#|!|\{|\} ]]; then echo "--option value \"$OPTION_VALUE\" is invalid" exit 1 fi if [[ $OPTION_VALUE =~ [[:space:]] ]]; then OPTION_VALUE=\"$OPTION_VALUE\" fi fi if [ -z "$ENABLE" -a -z "$FIND" -a -z "$FRIENDLY" -a -z "$PROPERTY" -a -z "$FOREIGN" -a -z "$OPTION_NAME" -a -z "$RECHECK_WWID" ]; then SHOW_STATUS=1 fi if [ -n "$MODULE" ] && [ "$MODULE" != "y" -a "$MODULE" != "n" ]; then echo "--with_module must be either 'y' or 'n'" exit 1 fi if [ -n "$MULTIPATHD" ] && [ "$MULTIPATHD" != "y" -a "$MULTIPATHD" != "n" ]; then echo "--with_multipathd must be either 'y' or 'n'" exit 1 fi if [ "$ENABLE" = 2 -a -z "$HAVE_OUTFILE" ]; then echo "Because --allow makes changes that cannot be automatically reversed," echo "you must set --outfile when you set --allow" exit 1 fi } function add_blacklist_exceptions { INDEX=0 while [ "$INDEX" -lt "$WWIDS" ] ; do sed -i '/^blacklist_exceptions[[:space:]]*{/ a\ wwid '"\"${WWID_LIST[$INDEX]}\""' ' $TMPFILE ((INDEX++)) done } umask 0077 parse_args "$@" validate_args if [ ! -d "$MULTIPATHDIR" ]; then echo "/etc/multipath/ does not exist. failing" exit 1 fi rm $TMPFILE 2> /dev/null echo "$DEFAULT_CONFIG" > $TMPFILE if [ -f "$CONFIGFILE" ]; then cp $CONFIGFILE $TMPFILE fi if grep -q "^blacklist[[:space:]]*{" $TMPFILE ; then HAVE_BLACKLIST=1 fi if grep -q "^blacklist_exceptions[[:space:]]*{" $TMPFILE ; then HAVE_EXCEPTIONS=1 fi if grep -q "^defaults[[:space:]]*{" $TMPFILE ; then HAVE_DEFAULTS=1 fi if [ -z "$MODULE" -o "$MODULE" = "y" ]; then if lsmod | grep -q "dm_multipath" ; then HAVE_MODULE=1 else HAVE_MODULE=0 fi fi if [ "$MULTIPATHD" = "y" ]; then if /bin/systemctl status multipathd.service > /dev/null 2>&1 ; then HAVE_MULTIPATHD=1 else HAVE_MULTIPATHD=0 fi fi if [ "$HAVE_BLACKLIST" = "1" ]; then if sed -n '/^blacklist[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*devnode[[:space:]][[:space:]]*\"\.\?\*\"" ; then HAVE_DISABLE=1 elif sed -n '/^blacklist[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*#[[:space:]]*devnode[[:space:]][[:space:]]*\"\.\?\*\"" ; then HAVE_DISABLE=0 fi fi if [ "$HAVE_BLACKLIST" = "1" ]; then if sed -n '/^blacklist[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*wwid[[:space:]][[:space:]]*\"\.\?\*\"" ; then HAVE_WWID_DISABLE=1 elif sed -n '/^blacklist[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*#[[:space:]]*wwid[[:space:]][[:space:]]*\"\.\?\*\"" ; then HAVE_WWID_DISABLE=0 fi fi if [ "$HAVE_DEFAULTS" = "1" ]; then HAVE_FIND=`sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | sed -n 's/^[[:blank:]]*find_multipaths[[:blank:]][[:blank:]]*\([^[:blank:]]*\).*$/\1/p' | sed -n 1p` if [ "$HAVE_FIND" = "1" ]; then HAVE_FIND="yes" elif [ "$HAVE_FIND" = "0" ]; then HAVE_FIND="no" fi if sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*user_friendly_names[[:space:]][[:space:]]*\(yes\|1\)" ; then HAVE_FRIENDLY=1 elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*user_friendly_names[[:space:]][[:space:]]*\(no\|0\)" ; then HAVE_FRIENDLY=0 fi if sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*recheck_wwid[[:space:]][[:space:]]*\(yes\|1\)" ; then HAVE_RECHECK_WWID=1 elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*recheck_wwid[[:space:]][[:space:]]*\(no\|0\)" ; then HAVE_RECHECK_WWID=0 fi if sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*#[[:space:]]*enable_foreign" ; then HAVE_FOREIGN=0 elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*enable_foreign[[:space:]][[:space:]]*\"\.\*\"" ; then HAVE_FOREIGN=1 elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*enable_foreign[[:space:]][[:space:]]*\"\^\$\"" ; then HAVE_FOREIGN=2 elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*enable_foreign[[:space:]][[:space:]]*\"NONE\"" ; then HAVE_FOREIGN=2 elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*enable_foreign" ; then HAVE_FOREIGN=3 fi if [ -n "$OPTION_NAME" ]; then if sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q '^[[:space:]]*'"$OPTION_NAME"'[[:space:]][[:space:]]*'"$OPTION_VALUE" ; then HAVE_OPTION=1 elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q '^[[:space:]]*'"$OPTION_NAME"'\([[:space:]].*\)\?$' ; then HAVE_OPTION=0 fi fi fi if [ "$HAVE_EXCEPTIONS" = "1" ]; then if sed -n '/^blacklist_exceptions[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*property[[:space:]][[:space:]]*\"(SCSI_IDENT_|ID_WWN)\"" ; then HAVE_PROPERTY=1 elif sed -n '/^blacklist_exceptions[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*#[[:space:]]*property[[:space:]][[:space:]]*\"(SCSI_IDENT_|ID_WWN)\"" ; then HAVE_PROPERTY=0 fi fi if [ -n "$SHOW_STATUS" ]; then if [ -z "$HAVE_DISABLE" -o "$HAVE_DISABLE" = 0 ]; then echo "multipath is enabled" else echo "multipath is disabled" fi if [ -z "$HAVE_FIND" ]; then echo "find_multipaths is off" else echo "find_multipaths is $HAVE_FIND" fi if [ -z "$HAVE_FRIENDLY" -o "$HAVE_FRIENDLY" = 0 ]; then echo "user_friendly_names is disabled" else echo "user_friendly_names is enabled" fi if [ -z "$HAVE_RECHECK_WWID" -o "$HAVE_RECHECK_WWID" = 0 ]; then echo "recheck_wwid is disabled" else echo "recheck_wwid is enabled" fi if [ -z "$HAVE_PROPERTY" -o "$HAVE_PROPERTY" = 0 ]; then echo "default property blacklist is disabled" else echo "default property blacklist is enabled" fi if [ -z "$HAVE_FOREIGN" -o "$HAVE_FOREIGN" = 0 ]; then echo "enable_foreign is not set (no foreign multipath devices will be shown)" elif [ "$HAVE_FOREIGN" = 1 ]; then echo "enable_foreign is set (all foreign multipath devices will be shown)" elif [ "$HAVE_FOREIGN" = 2 ]; then echo "enable_foreign is set (no foreign multipath devices will be shown)" else echo "enable_foreign is set (foreign multipath devices may not be shown)" fi if [ -n "$HAVE_MODULE" ]; then if [ "$HAVE_MODULE" = 1 ]; then echo "dm_multipath module is loaded" else echo "dm_multipath module is not loaded" fi fi if [ -z "$HAVE_MULTIPATHD" ]; then if /bin/systemctl status multipathd.service > /dev/null 2>&1 ; then HAVE_MULTIPATHD=1 else HAVE_MULTIPATHD=0 fi fi if [ "$HAVE_MULTIPATHD" = 1 ]; then echo "multipathd is running" else echo "multipathd is not running" fi exit 0 fi if [ -z "$HAVE_BLACKLIST" ]; then cat >> $TMPFILE <<- _EOF_ blacklist { } _EOF_ fi if [ -z "$HAVE_DEFAULTS" ]; then cat >> $TMPFILE <<- _EOF_ defaults { } _EOF_ fi if [ "$ENABLE" = 2 ]; then if [ "$HAVE_DISABLE" = 1 ]; then sed -i '/^blacklist[[:space:]]*{/,/^}/ s/^[[:space:]]*devnode[[:space:]][[:space:]]*\"\.\?\*\"/# devnode ".*"/' $TMPFILE fi if [ -z "$HAVE_WWID_DISABLE" ]; then sed -i '/^blacklist[[:space:]]*{/ a\ wwid ".*" ' $TMPFILE elif [ "$HAVE_WWID_DISABLE" = 0 ]; then sed -i '/^blacklist[[:space:]]*{/,/^}/ s/^[[:space:]]*#[[:space:]]*wwid[[:space:]][[:space:]]*\"\.\?\*\"/ wwid ".*"/' $TMPFILE fi if [ "$HAVE_EXCEPTIONS" = 1 ]; then sed -i '/^blacklist_exceptions[[:space:]]*{/,/^}/ {/^[[:space:]]*wwid/ d}' $TMPFILE else cat >> $TMPFILE <<- _EOF_ blacklist_exceptions { } _EOF_ fi add_blacklist_exceptions elif [ "$ENABLE" = 1 ]; then if [ "$HAVE_DISABLE" = 1 ]; then sed -i '/^blacklist[[:space:]]*{/,/^}/ s/^[[:space:]]*devnode[[:space:]][[:space:]]*\"\.\?\*\"/# devnode ".*"/' $TMPFILE fi elif [ "$ENABLE" = 0 ]; then if [ -z "$HAVE_DISABLE" ]; then sed -i '/^blacklist[[:space:]]*{/ a\ devnode ".*" ' $TMPFILE elif [ "$HAVE_DISABLE" = 0 ]; then sed -i '/^blacklist[[:space:]]*{/,/^}/ s/^[[:space:]]*#[[:space:]]*devnode[[:space:]][[:space:]]*\"\.\?\*\"/ devnode ".*"/' $TMPFILE fi fi if [ -n "$FIND" ]; then if [ -z "$HAVE_FIND" ]; then sed -i '/^defaults[[:space:]]*{/ a\ find_multipaths '"$FIND"' ' $TMPFILE CHANGED_CONFIG=1 elif [ "$FIND" != "$HAVE_FIND" ]; then sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:blank:]]*find_multipaths[[:blank:]][[:blank:]]*[^[:blank:]]*/ find_multipaths '"$FIND"'/' $TMPFILE CHANGED_CONFIG=1 fi fi if [ "$FRIENDLY" = "n" ]; then if [ "$HAVE_FRIENDLY" = 1 ]; then sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*user_friendly_names[[:space:]][[:space:]]*\(yes\|1\)/ user_friendly_names no/' $TMPFILE CHANGED_CONFIG=1 fi elif [ "$FRIENDLY" = "y" ]; then if [ -z "$HAVE_FRIENDLY" ]; then sed -i '/^defaults[[:space:]]*{/ a\ user_friendly_names yes ' $TMPFILE CHANGED_CONFIG=1 elif [ "$HAVE_FRIENDLY" = 0 ]; then sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*user_friendly_names[[:space:]][[:space:]]*\(no\|0\)/ user_friendly_names yes/' $TMPFILE CHANGED_CONFIG=1 fi fi if [ "$RECHECK_WWID" = "n" ]; then if [ "$HAVE_RECHECK_WWID" = 1 ]; then sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*recheck_wwid[[:space:]][[:space:]]*\(yes\|1\)/ recheck_wwid no/' $TMPFILE CHANGED_CONFIG=1 fi elif [ "$RECHECK_WWID" = "y" ]; then if [ -z "$HAVE_RECHECK_WWID" ]; then sed -i '/^defaults[[:space:]]*{/ a\ recheck_wwid yes ' $TMPFILE CHANGED_CONFIG=1 elif [ "$HAVE_RECHECK_WWID" = 0 ]; then sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*recheck_wwid[[:space:]][[:space:]]*\(no\|0\)/ recheck_wwid yes/' $TMPFILE CHANGED_CONFIG=1 fi fi if [ "$PROPERTY" = "n" ]; then if [ "$HAVE_PROPERTY" = 1 ]; then sed -i '/^blacklist_exceptions[[:space:]]*{/,/^}/ s/^[[:space:]]*property[[:space:]][[:space:]]*\"(SCSI_IDENT_|ID_WWN)\"/# property \"(SCSI_IDENT_|ID_WWN)\"/' $TMPFILE CHANGED_CONFIG=1 fi elif [ "$PROPERTY" = "y" ]; then if [ -z "$HAVE_PROPERTY" -a -z "$HAVE_EXCEPTIONS" ]; then cat >> $TMPFILE << _EOF_ blacklist_exceptions { property "(SCSI_IDENT_|ID_WWN)" } _EOF_ CHANGED_CONFIG=1 elif [ -z "$HAVE_PROPERTY" ]; then sed -i '/^blacklist_exceptions[[:space:]]*{/ a\ property "(SCSI_IDENT_|ID_WWN)" ' $TMPFILE CHANGED_CONFIG=1 elif [ "$HAVE_PROPERTY" = 0 ]; then sed -i '/^blacklist_exceptions[[:space:]]*{/,/^}/ s/^[[:space:]]*#[[:space:]]*property[[:space:]][[:space:]]*\"(SCSI_IDENT_|ID_WWN)\"/ property \"(SCSI_IDENT_|ID_WWN)\"/' $TMPFILE CHANGED_CONFIG=1 fi fi if [ "$FOREIGN" = "n" ]; then if [ "$HAVE_FOREIGN" = 1 -o "$HAVE_FOREIGN" = 3 ]; then sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*enable_foreign/# enable_foreign/' $TMPFILE CHANGED_CONFIG=1 fi elif [ "$FOREIGN" = "y" ]; then if [ -z "$HAVE_FOREIGN" ]; then sed -i '/^defaults[[:space:]]*{/ a\ enable_foreign ".*" ' $TMPFILE CHANGED_CONFIG=1 elif [ "$HAVE_FOREIGN" = 0 -o "$HAVE_FOREIGN" = 2 -o "$HAVE_FOREIGN" = 3 ]; then sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*#\?[[:space:]]*enable_foreign.*$/ enable_foreign ".*"/' $TMPFILE CHANGED_CONFIG=1 fi fi if [ -n "$OPTION_NAME" -a -n "$OPTION_VALUE" ]; then if [ -z "$HAVE_OPTION" ]; then sed -i '/^defaults[[:space:]]*{/ a\ '"$OPTION_NAME"' '"$OPTION_VALUE"' ' $TMPFILE CHANGED_CONFIG=1 elif [ "$HAVE_OPTION" = 0 ]; then sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*'"$OPTION_NAME"'\([[:space:]].*\)\?$/ '"$OPTION_NAME"' '"$OPTION_VALUE"'/' $TMPFILE CHANGED_CONFIG=1 fi elif [ -n "$OPTION_NAME" -a -n "$HAVE_OPTION" ]; then sed -i '/^defaults[[:space:]]*{/,/^}/{/^[[:space:]]*'"$OPTION_NAME"'\([[:space:]].*\)\?$/d}' $TMPFILE CHANGED_CONFIG=1 fi if [ -f "$OUTPUTFILE" ]; then cp $OUTPUTFILE $OUTPUTFILE.old if [ $? != 0 ]; then echo "failed to backup old config file, $OUTPUTFILE not updated" exit 1 fi fi cp $TMPFILE $OUTPUTFILE if [ $? != 0 ]; then echo "failed to copy new config file into place, check $OUTPUTFILE is still OK" exit 1 fi rm -f $TMPFILE if [ "$ENABLE" = 1 ]; then if [ "$HAVE_MODULE" = 0 ]; then modprobe dm_multipath fi if [ "$HAVE_MULTIPATHD" = 0 ]; then systemctl start multipathd.service fi elif [ "$ENABLE" = 0 ]; then if [ "$HAVE_MULTIPATHD" = 1 ]; then systemctl stop multipathd.service fi elif [ -n "$CHANGED_CONFIG" -a "$HAVE_MULTIPATHD" = 1 ]; then systemctl reload multipathd.service fi
[+]
..
[-] exim_fixdb
[edit]
[-] getpolicyload
[edit]
[-] bpftool
[edit]
[-] xfs_growfs
[edit]
[-] kpatch
[edit]
[-] pivot_root
[edit]
[-] fsfreeze
[edit]
[-] named-checkzone
[edit]
[-] xfs_info
[edit]
[-] lvm
[edit]
[-] paperconfig
[edit]
[-] pure-config.pl
[edit]
[-] vgextend
[edit]
[-] xfs_logprint
[edit]
[-] xfsdump
[edit]
[-] faillock
[edit]
[-] eximstats
[edit]
[-] grpck
[edit]
[-] iptables-translate
[edit]
[-] pwconv
[edit]
[-] xfs_ncheck
[edit]
[-] iptables-restore
[edit]
[-] xfs_admin
[edit]
[-] xfs_fsr
[edit]
[-] key.dns_resolver
[edit]
[-] ping
[edit]
[-] iptables-nft
[edit]
[-] whmapi1
[edit]
[-] nfsdclnts
[edit]
[-] lnewusers
[edit]
[-] chkconfig
[edit]
[-] ip6tables-restore
[edit]
[-] validatetrans
[edit]
[-] vgconvert
[edit]
[-] luserdel
[edit]
[-] mkfs.minix
[edit]
[-] thin_migrate
[edit]
[-] pvck
[edit]
[-] mkfs.ext4
[edit]
[-] rpcinfo
[edit]
[-] lvmdump
[edit]
[-] cache_restore
[edit]
[-] readprofile
[edit]
[-] arptables-nft-restore
[edit]
[-] mountstats
[edit]
[-] sysctl
[edit]
[-] ctstat
[edit]
[-] tcpdump
[edit]
[-] ping6
[edit]
[-] blkdiscard
[edit]
[-] atd
[edit]
[-] avcstat
[edit]
[-] xtables-nft-multi
[edit]
[-] pwunconv
[edit]
[-] ownership
[edit]
[-] ethtool
[edit]
[-] mtr-packet
[edit]
[-] xfs_repair
[edit]
[-] setquota
[edit]
[-] adcli
[edit]
[-] update-pciids
[edit]
[-] rpc.statd
[edit]
[-] grpunconv
[edit]
[-] cache_metadata_size
[edit]
[-] chcpu
[edit]
[-] exim_dumpdb
[edit]
[-] runq
[edit]
[-] nfsdcld
[edit]
[-] intel_sdsi
[edit]
[-] getpcaps
[edit]
[-] atrun
[edit]
[-] request-key
[edit]
[-] thin_ls
[edit]
[-] iptables-restore-translate
[edit]
[-] rdisc
[edit]
[-] iprupdate
[edit]
[-] addpart
[edit]
[-] sm-notify
[edit]
[-] e2image
[edit]
[-] grub2-bios-setup
[edit]
[-] vgremove
[edit]
[-] era_check
[edit]
[-] dhclient-script
[edit]
[-] e2undo
[edit]
[-] mkdict
[edit]
[-] mpathconf
[edit]
[-] pdata_tools
[edit]
[-] anacron
[edit]
[-] pure-ftpwho
[edit]
[-] unix_chkpwd
[edit]
[-] cracklib-packer
[edit]
[-] tracepath6
[edit]
[-] rtcwake
[edit]
[-] clock
[edit]
[-] chroot
[edit]
[-] ifstat
[edit]
[-] iscsistart
[edit]
[-] ebtables-save
[edit]
[-] pure-ftpd
[edit]
[-] dnssec-keyfromlabel
[edit]
[-] route
[edit]
[-] lvmconfig
[edit]
[-] setpci
[edit]
[-] iprdump
[edit]
[-] lvmsar
[edit]
[-] crond
[edit]
[-] vgimportdevices
[edit]
[-] iscsid
[edit]
[-] vgimport
[edit]
[-] iprconfig
[edit]
[-] thin_restore
[edit]
[-] dnssec-dsfromkey
[edit]
[-] lvremove
[edit]
[-] rndc-confgen
[edit]
[-] nfsdclddb
[edit]
[-] depmod
[edit]
[-] arptables-save
[edit]
[-] logrotate
[edit]
[-] fsck.xfs
[edit]
[-] vgcfgbackup
[edit]
[-] semanage
[edit]
[-] pvs
[edit]
[-] unsquashfs
[edit]
[-] vgchange
[edit]
[-] genl
[edit]
[-] ebtables-translate
[edit]
[-] selabel_get_digests_all_partial_matches
[edit]
[-] hwclock
[edit]
[-] pure-authd
[edit]
[-] delpart
[edit]
[-] vgmerge
[edit]
[-] lvmsadc
[edit]
[-] grub2-switch-to-blscfg
[edit]
[-] exim_dbmbuild
[edit]
[-] mount.nfs4
[edit]
[-] zramctl
[edit]
[-] e2freefrag
[edit]
[-] ldattach
[edit]
[-] xfs_io
[edit]
[-] mariadbd
[edit]
[-] rpcdebug
[edit]
[-] sfdisk
[edit]
[-] reboot
[edit]
[-] init
[edit]
[-] convertquota
[edit]
[-] partx
[edit]
[-] suexec
[edit]
[-] smartd
[edit]
[-] lsmod
[edit]
[-] xfs_mdrestore
[edit]
[-] nameif
[edit]
[-] era_restore
[edit]
[-] pure-mrtginfo
[edit]
[-] selinux_check_access
[edit]
[-] grub2-install
[edit]
[-] groupdel
[edit]
[-] thin_dump
[edit]
[-] vigr
[edit]
[-] dmeventd
[edit]
[-] mkfs.msdos
[edit]
[-] install-info
[edit]
[-] imunify-notifier
[edit]
[-] alternatives
[edit]
[-] selinuxconlist
[edit]
[-] visudo
[edit]
[-] pure-uploadscript
[edit]
[-] tmpwatch
[edit]
[-] lfd
[edit]
[-] ip6tables-nft-save
[edit]
[-] dnssec-verify
[edit]
[-] dump-acct
[edit]
[-] exiqsumm
[edit]
[-] ipset
[edit]
[-] sefcontext_compile
[edit]
[-] dovecot
[edit]
[-] lgroupmod
[edit]
[-] sasldblistusers2
[edit]
[-] grpconv
[edit]
[-] selabel_lookup_best_match
[edit]
[-] udevadm
[edit]
[-] newusers
[edit]
[-] sestatus
[edit]
[-] dump-utmp
[edit]
[-] grub2-get-kernel-settings
[edit]
[-] lspci
[edit]
[-] service
[edit]
[-] ss
[edit]
[-] blkdeactivate
[edit]
[-] mklost+found
[edit]
[-] era_invalidate
[edit]
[-] rdma
[edit]
[-] ebtables-restore
[edit]
[-] ip6tables-translate
[edit]
[-] dnssec-revoke
[edit]
[-] fsck.vfat
[edit]
[-] tune2fs
[edit]
[-] iscsiuio
[edit]
[-] selinuxdefcon
[edit]
[-] mke2fs
[edit]
[-] auditd
[edit]
[-] mkswap
[edit]
[-] genhostid
[edit]
[-] dnssec-keygen
[edit]
[-] nologin
[edit]
[-] nfsdcltrack
[edit]
[-] dmidecode
[edit]
[-] named-checkconf
[edit]
[-] sos
[edit]
[-] setcap
[edit]
[-] fcgistarter
[edit]
[-] sa
[edit]
[-] grub2-reboot
[edit]
[-] ldconfig
[edit]
[-] grub2-probe
[edit]
[-] pvchange
[edit]
[-] groupmems
[edit]
[-] vdpa
[edit]
[-] NetworkManager
[edit]
[-] exim_tidydb
[edit]
[-] genhomedircon
[edit]
[-] xfs_quota
[edit]
[-] groupadd
[edit]
[-] semodule
[edit]
[-] dnssec-keymgr
[edit]
[-] lvdisplay
[edit]
[-] rpcctl
[edit]
[-] mysqld
[edit]
[-] fsck.minix
[edit]
[-] thin_repair
[edit]
[-] ctrlaltdel
[edit]
[-] accton
[edit]
[-] umount.nfs
[edit]
[-] start-statd
[edit]
[-] dosfsck
[edit]
[-] pdns_server
[edit]
[-] quotastats
[edit]
[-] grub2-set-default
[edit]
[-] lusermod
[edit]
[-] arp
[edit]
[-] ebtables-nft
[edit]
[-] selabel_digest
[edit]
[-] httpd_ls_bak_bak
[edit]
[-] shutdown
[edit]
[-] fsck.ext4
[edit]
[-] augenrules
[edit]
[-] lgroupadd
[edit]
[-] lvm_import_vdo
[edit]
[-] lvcreate
[edit]
[-] pvresize
[edit]
[-] logsave
[edit]
[-] dnssec-coverage
[edit]
[-] arptables-nft
[edit]
[-] setsebool
[edit]
[-] parted
[edit]
[-] ebtables-nft-save
[edit]
[-] ip6tables
[edit]
[-] mkfs
[edit]
[-] ip
[edit]
[-] cache_check
[edit]
[-] vgsplit
[edit]
[-] exiqgrep
[edit]
[-] kexec
[edit]
[-] tracepath
[edit]
[-] iconvconfig
[edit]
[-] grub2-macbless
[edit]
[-] dcb
[edit]
[-] dovecot_cpshutdown
[edit]
[-] lgroupdel
[edit]
[-] adduser
[edit]
[-] raid-check
[edit]
[-] multipathd
[edit]
[-] modsec-sdbm-util
[edit]
[-] xtables-monitor
[edit]
[-] halt
[edit]
[-] pwhistory_helper
[edit]
[-] blkid
[edit]
[-] ifenslave
[edit]
[-] mount.fuse
[edit]
[-] accessdb
[edit]
[-] update-smart-drivedb
[edit]
[-] sosreport
[edit]
[-] gssproxy
[edit]
[-] grub2-set-password
[edit]
[-] groupmod
[edit]
[-] restorecon
[edit]
[-] fdformat
[edit]
[-] filefrag
[edit]
[-] plymouthd
[edit]
[-] fstrim
[edit]
[-] dnssec-checkds
[edit]
[-] selabel_partial_match
[edit]
[-] cryptsetup
[edit]
[-] e4crypt
[edit]
[-] ledmon
[edit]
[-] showmount
[edit]
[-] chronyd
[edit]
[-] makedumpfile
[edit]
[-] xfsrestore
[edit]
[-] tuned-adm
[edit]
[-] fsck.ext2
[edit]
[-] dosfslabel
[edit]
[-] swapoff
[edit]
[-] firewalld
[edit]
[-] pvscan
[edit]
[-] lvmdevices
[edit]
[-] applygnupgdefaults
[edit]
[-] md-auto-readd.sh
[edit]
[-] xfs_freeze
[edit]
[-] resizepart
[edit]
[-] rpc.idmapd
[edit]
[-] plymouth-set-default-theme
[edit]
[-] ip6tables-nft-restore
[edit]
[-] partprobe
[edit]
[-] matchpathcon
[edit]
[-] nscd
[edit]
[-] vgdisplay
[edit]
[-] vgck
[edit]
[-] rtkitctl
[edit]
[-] selabel_lookup
[edit]
[-] cache_dump
[edit]
[-] mkfs.cramfs
[edit]
[-] ebtables-nft-restore
[edit]
[-] unix_update
[edit]
[-] fsck.msdos
[edit]
[-] telinit
[edit]
[-] lvchange
[edit]
[-] swaplabel
[edit]
[-] selinuxexeccon
[edit]
[-] pidof
[edit]
[-] lvmdiskscan
[edit]
[-] mkdumprd
[edit]
[-] autrace
[edit]
[-] iprdbg
[edit]
[-] fdisk
[edit]
[-] thin_metadata_unpack
[edit]
[-] lvs
[edit]
[-] whmapi0
[edit]
[-] iprsos
[edit]
[-] blockdev
[edit]
[-] xfs_db
[edit]
[-] ipset-translate
[edit]
[-] tsig-keygen
[edit]
[-] edquota
[edit]
[-] xfs_mkfile
[edit]
[-] resize2fs
[edit]
[-] rtacct
[edit]
[-] exicyclog
[edit]
[-] vipw
[edit]
[-] vgexport
[edit]
[-] lvscan
[edit]
[-] xfs_rtcp
[edit]
[-] vgscan
[edit]
[-] selinuxenabled
[edit]
[-] dnssec-importkey
[edit]
[-] grubby
[edit]
[-] pvdisplay
[edit]
[-] g13-syshelp
[edit]
[-] exim
[edit]
[-] exim_checkaccess
[edit]
[-] rtmon
[edit]
[-] arping
[edit]
[-] csf
[edit]
[-] restorecon_xattr
[edit]
[-] lid
[edit]
[-] vgrename
[edit]
[-] fsadm
[edit]
[-] nfsidmap
[edit]
[-] getsebool
[edit]
[-] kpartx
[edit]
[-] cracklib-format
[edit]
[-] vgmknodes
[edit]
[-] realm
[edit]
[-] sssd
[edit]
[-] fuser
[edit]
[-] zic
[edit]
[-] fsck
[edit]
[-] grub2-set-bootflag
[edit]
[-] iptunnel
[edit]
[-] thin_check
[edit]
[-] plipconfig
[edit]
[-] runuser
[edit]
[-] ebtables
[edit]
[-] iprinit
[edit]
[-] vgimportclone
[edit]
[-] nvme
[edit]
[-] rpc.mountd
[edit]
[-] pvcreate
[edit]
[-] devlink
[edit]
[-] named-journalprint
[edit]
[-] badblocks
[edit]
[-] blkmapd
[edit]
[-] losetup
[edit]
[-] named-compilezone
[edit]
[-] mkfs.xfs
[edit]
[-] quotaoff
[edit]
[-] rmmod
[edit]
[-] xqmstats
[edit]
[-] hdparm
[edit]
[-] e4defrag
[edit]
[-] arptables
[edit]
[-] ipmaddr
[edit]
[-] mpathpersist
[edit]
[-] e2fsck
[edit]
[-] xfs_bmap
[edit]
[-] quotaon
[edit]
[-] cracklib-unpacker
[edit]
[-] lpasswd
[edit]
[-] vmcore-dmesg
[edit]
[-] mksquashfs
[edit]
[-] era_dump
[edit]
[-] pam_console_apply
[edit]
[-] xfsinvutil
[edit]
[-] pwck
[edit]
[-] dnssec-signzone
[edit]
[-] e2mmpstatus
[edit]
[-] arptables-restore
[edit]
[-] quotacheck
[edit]
[-] ip6tables-restore-translate
[edit]
[-] dhclient
[edit]
[-] poweroff
[edit]
[-] packer
[edit]
[-] named-nzd2nzf
[edit]
[-] mdmon
[edit]
[-] xfs_estimate
[edit]
[-] blkzone
[edit]
[-] consoletype
[edit]
[-] mdadm
[edit]
[-] capsh
[edit]
[-] whmlogin
[edit]
[-] fsck.fat
[edit]
[-] usermod
[edit]
[-] iptables-nft-restore
[edit]
[-] rcmysql
[edit]
[-] nfsstat
[edit]
[-] iscsi-iname
[edit]
[-] mii-diag
[edit]
[-] sendmail
[edit]
[-] rpc.nfsd
[edit]
[-] modinfo
[edit]
[-] sulogin
[edit]
[-] thin_metadata_pack
[edit]
[-] userdel
[edit]
[-] rsyslogd
[edit]
[-] nfsconf
[edit]
[-] biosdecode
[edit]
[-] sw-engine-fpm
[edit]
[-] pam_namespace_helper
[edit]
[-] rotatelogs
[edit]
[-] findfs
[edit]
[-] tc
[edit]
[-] rtstat
[edit]
[-] lvreduce
[edit]
[-] ifconfig
[edit]
[-] tuned
[edit]
[-] fix-info-dir
[edit]
[-] luseradd
[edit]
[-] lchage
[edit]
[-] sshd
[edit]
[-] exinext
[edit]
[-] ddns-confgen
[edit]
[-] exportfs
[edit]
[-] ip6tables-save
[edit]
[-] swapon
[edit]
[-] tcpslice
[edit]
[-] lvmpolld
[edit]
[-] getenforce
[edit]
[-] vgs
[edit]
[-] apachectl
[edit]
[-] addgnupghome
[edit]
[-] vgreduce
[edit]
[-] cfdisk
[edit]
[-] smartctl
[edit]
[-] nft
[edit]
[-] useradd
[edit]
[-] dmsetup
[edit]
[-] nstat
[edit]
[-] lnstat
[edit]
[-] mkhomedir_helper
[edit]
[-] sos-collector
[edit]
[-] irqbalance-ui
[edit]
[-] grub2-setpassword
[edit]
[-] getpidprevcon
[edit]
[-] cache_writeback
[edit]
[-] iscsiadm
[edit]
[-] insmod
[edit]
[-] mount.nfs
[edit]
[-] nfsiostat
[edit]
[-] pam_timestamp_check
[edit]
[-] switch_root
[edit]
[-] rpc.gssd
[edit]
[-] e2label
[edit]
[-] pure-quotacheck
[edit]
[-] load_policy
[edit]
[-] mpathcleanup
[edit]
[-] multipath
[edit]
[-] thin_trim
[edit]
[-] update-alternatives
[edit]
[-] vgcreate
[edit]
[-] exigrep
[edit]
[-] getcap
[edit]
[-] named
[edit]
[-] ether-wake
[edit]
[-] runlevel
[edit]
[-] iptables
[edit]
[-] aureport
[edit]
[-] pvmove
[edit]
[-] mkfs.fat
[edit]
[-] lvresize
[edit]
[-] arptables-nft-save
[edit]
[-] mcelog
[edit]
[-] cracklib-check
[edit]
[-] tipc
[edit]
[-] xfs_spaceman
[edit]
[-] xfs_metadump
[edit]
[-] start-stop-daemon
[edit]
[-] ip6tables-nft
[edit]
[-] iptables-save
[edit]
[-] fsck.ext3
[edit]
[-] umount.nfs4
[edit]
[-] dumpe2fs
[edit]
[-] chgpasswd
[edit]
[-] lshw
[edit]
[-] cache_repair
[edit]
[-] vgcfgrestore
[edit]
[-] exim_lock
[edit]
[-] mii-tool
[edit]
[-] weak-modules
[edit]
[-] xfs_copy
[edit]
[-] vpddecode
[edit]
[-] rndc
[edit]
[-] thin_rmap
[edit]
[-] ledctl
[edit]
[-] create-cracklib-dict
[edit]
[-] lvconvert
[edit]
[-] nsec3hash
[edit]
[-] wipefs
[edit]
[-] repquota
[edit]
[-] bridge
[edit]
[-] virt-what-cvm
[edit]
[-] mkfs.ext2
[edit]
[-] mtr
[edit]
[-] mkfs.vfat
[edit]
[-] chpasswd
[edit]
[-] rpcbind
[edit]
[-] dnssec-settime
[edit]
[-] ausearch
[edit]
[-] mkfs.ext3
[edit]
[-] exiwhat
[edit]
[-] virt-what
[edit]
[-] modprobe
[edit]
[-] dmstats
[edit]
[-] thin_metadata_size
[edit]
[-] dmfilemapd
[edit]
[-] sss_cache
[edit]
[-] agetty
[edit]
[-] auditctl
[edit]
[-] fixfiles
[edit]
[-] thin_delta
[edit]
[-] slattach
[edit]
[-] nfsref
[edit]
[-] fatlabel
[edit]
[-] saslpasswd2
[edit]
[-] debugfs
[edit]
[-] rfkill
[edit]
[-] iptables-nft-save
[edit]
[-] dnssec-cds
[edit]
[-] grub2-mkconfig
[edit]
[-] installkernel
[edit]
[-] setenforce
[edit]
[-] pure-certd
[edit]
[-] mkdosfs
[edit]
[-] httpd
[edit]
[-] pvremove
[edit]
[-] fsck.cramfs
[edit]
[-] lvrename
[edit]
[-] irqbalance
[edit]
[-] lvextend
[edit]
[-] htcacheclean
[edit]
[-] setfiles
[edit]