As dsh is a standard AIX command (package dsm.dsh) starting a parallel shell on multiple server, using ssh mechanism, dshvio is a shell (but sequential only) that can be used on VIOS as padmin or root.
In the same idea, dcp will copy a file on many server in parallel, while dcpvio will copy in sequential mode for padmin user only
[root@nim]/root/scripts# cat dshvio
#!/bin/ksh #set -x ############################################# #@(#) execute an ssh on multiple VIOS as padmin or root ############################################# # version 1.0 09-2016 Manu ############################################# #VIOS="vios1 vios3" path_script=/root/script logpath=/root/script/log DSH_WCOLL=${DSH_WCOLL:-"/root/.ssh/.dsh_wcoll_vios.cfg"} # export DSH_WCOLL=...; export NOCR="\t\c" ; dsh '...' sed '/^$/d' $DSH_WCOLL > $logpath/dcp_$$.list sed '/^ *$/d' $logpath/dcp_$$.list > $logpath/dcp_$$.list2 grep -v "^ *#" $logpath/dcp_$$.list2 > $logpath/dcp_$$.list grep -v "$(hostname)" $logpath/dcp_$$.list > $logpath/dcp_$$.list2 ; mv $logpath/dcp_$$.list2 $logpath/dcp_$$.list # pas d'execution locale VIOS=$(cat $logpath/dcp_$$.list); rm -f $logpath/dcp_$$.list DisplayUsage () { echo "Syntax: dshvio COMMAND\n" echo " Valid parameters are:\n -r for a root command\n -n for a list of VIOS servers\n -n vios1\n -n vios1,vios2" } if [ ${#*} -eq 0 ] then DisplayUsage else while getopts :rn: PARMS do case $PARMS in r) lslpp -L | grep -w expect > /dev/null if [ $? -ne 0 ] then echo "Error: cannot use -r flag because expect package is not installed" exit 1 else ROOT=1 fi ;; n) VIOS=${OPTARG} VIOS=`echo ${VIOS} | sed 's/,/ /g'` ;; ?) echo "Valid parameters are:\n -r for a root command\n -n for a list of VIOS servers\n -n vios1\n -n vios1,vios2" exit ;; esac done shift $(($OPTIND -1)) VIOSCMD=${*} if [ ${#VIOSCMD} -eq 0 ] then DisplayUsage fi fi for VIO in ${VIOS} do ping -c1 ${VIO} > /dev/null if [ $? -eq 0 ] then echo "========================== \nVIO server --> ${VIO}\n==========================" if [ ${ROOT:=0} -ne 1 ] then ssh padmin@${VIO} "ioscli ${VIOSCMD}" else ssh padmin@${VIO} ioscli oem_setup_env <<+EOF+ ${VIOSCMD} +EOF+ #expect -c "spawn ssh padmin@${VIO} ; expect \"\$\*\"; send \"oem_setup_env\\r\"; expect \"\#\*\"; send \"${VIOSCMD}\\r\";\ #send \"exit\\r\"; expect \"\$\*\"; send \"exit\\r\""| egrep -v "^spawn|^Last|oem_setup_env|^exit|^#|^\[padmin" fi else echo "========================== \nVIO server --> ${VIO}\n ==========================" echo "VIOS Server; ${VIO} is not responding" fi done
[root@nim]/root/scripts# cat dcpvio
#!/bin/ksh #set -x ############################################# #@(#) execute an scp on multiple VIOS as padmin only ############################################# # version 1.0 09-2016 Manu ############################################# #VIOS="vios1 vios3" path_script=/root/script logpath=/root/script/log VIOS=$(cat $path_script/dsh_wcoll_vios.cfg) DisplayUsage () { echo "Syntax: dcpvio SRC TARGET\n Run dcpvio -? for the valid parameters" } if [ ${#*} -ne 2 ] then DisplayUsage else source=$1 target=$2 fi for VIO in ${VIOS} do ping -c1 ${VIO} > /dev/null if [ $? -eq 0 ] then echo "========================== \nVIO server --> ${VIO}\n ==========================" scp $source padmin@${VIO}:$target else echo "========================== \nVIO server --> ${VIO}\n ==========================" echo "VIOS Server; ${VIO} is not responding" fi done