세 개의 스크립트 결합 [닫기]

세 개의 스크립트 결합 [닫기]

다음 스크립트를 결합해야 합니다. 그들은 별도로 아주 잘 작동합니다. 하나의 조건이 성공하면 나머지 두 조건은 무시되어야 합니다.

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

분명히, 쉘이 이를 이해한다고 가정합니다 [[ ... ]]. 그렇지 않은 경우 수정은 간단합니다.

virtinfo이 코드는 액세스 권한 등이 없기 때문에 완전히 테스트되지 않았습니다 .

관련 정보