组合三个脚本

组合三个脚本

我需要结合下面的脚本。他们分别工作得很好。如果任何一个条件成功,则需要忽略其余两个。

a="primary"
b=`virtinfo -a |grep name |'awk' '{ print $3}'`
if [ "$a" == "$b" ]
then
echo "`hostname` I'm Control Domain"
ldm list | awk '{ print $1}'
fi

a=`cat /etc/nodename`
b=`virtinfo -a |grep name |'awk' '{ print $3}'`
if [ "$a" = "$b" ]
then
echo "`hostname` I'm Ldom"
virtinfo -a |grep Control
zoneadm list|grep -v global
fi

if [ ! "`/usr/bin/zonename`" = 'global' ]
then
echo " `hostname` im in a Local Zone"
fi

答案1

我希望我正确理解了你的逻辑。

这是假设一台机器不能同时位于多个域(或区域,或无论您如何称呼它们)。如果机器不在“控制域”中,它会继续检查它是否在“Ldom”中。如果不是这种情况,它会继续检查它是否位于“本地区域”。如果没有任何匹配,它会显示“我完全迷路了”。

virtname="$( virtinfo -a | awk '/name/ { print $3 }' )"
myname="$( hostname )"

if [[ "$virtname" == "primary" ]]; then 
  printf '%s, I am Control Domain\n' "$myname"

  ldm list | awk '{ print $1 }'

elif [[ "$virtname" == "$( cat /etc/nodename )" ]]; then
  printf '%s, I am Ldom\n' "$myname"

  virtinfo -a  | grep "Control"
  zoneadm list | grep -v "global"

elif [[ "$( /usr/bin/zonename )" != "global" ]]; then
  printf '%s, I am in a Local Zone\n' "$myname"
else
  printf '%s, I am totally lost\n' "$myname"
fi

显然,它还假设 shell 能够理解[[ ... ]].如果情况并非如此,那么修复起来就很简单了。

请注意,此代码完全未经测试,因为我无权访问virtinfo等。

相关内容