User Tools

Site Tools


aix:script_dshvio_dcpvio

Table of Contents

DSH

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

DSHVIO

[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

DCPVIO

[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
aix/script_dshvio_dcpvio.txt · Last modified: 2021/01/01 21:21 (external edit)