리눅스 쉘스크립트좀 봐주세요... = , != 가 제대로 동작안하는거 같아요.

김건우   
   조회 5865   추천 0    

스크립트 내용 및 동작
 
수행환경 : 센트오에스 리눅스 5.9 (32비트) on vmware
 
내용 : 이하첨부
 
동작 : rsh로 상대측 서버의 DB상태 코멘트를 확인하고,
         해당코멘트가 Available 이 아닌경우
         hadr_takeover.sh라는 스크립트를 실행
         하고, 그렇지 않은 경우 계속 감시하도록 함
 
( 오동작 내용 )
 
스크립트내용 중 "$STATUS" != "Available" 부분이 != 인데도 hadr_takeover.sh를 실행해버림
 
스크립트 내용을  "$STATUS" = "Operable" 로 바꾸어 동작을 확인해보니 hadr_takeover.sh를 실행해야 하는데도 실행은 안함!!
 
 
(스크립트 내용)
 
[db2inst1@linuxx86svr1 ~]$ cat hadr_mon.sh
#!/bin/sh
while true
do
rsh linuxx86svr0 /db2home/db2inst1/sqllib/bin/db2gcf -i db2inst1 -s | grep DB2 | awk '{ print $4 }' | read STATUS
if [ "$STATUS"  !=  "Available" ]
  then
    sh hadr_takeover.sh
    exit 0
  fi
  sleep 60
done
 
[db2inst1@linuxx86svr1 ~]$ db2gcf -i db2inst1 -s | grep DB2 | awk '{ print $4 }'
Available
 
 
 
도움바랍니다.
 
짧은글 일수록 신중하게.
패패로 2013-02
shell 실행시킬때 sh -x 옵션을 주시면 실제 할당되는 값들이 보입니다. 이걸로 디버그 해보시면 원인을 찾을 수 있을 것 같네요.
이현호K 2013-02
read STATUS쪽으로 결과값이 안들어오는것 같네요.
결과값을 변수로 담으시려면,

STATUS=`cat ./1 | awk '{print \$4}'` 이런형태로 잡으시면 됩니다.

$ cat ./1
-----------------------
1  2  3  Available
-----------------------

ex) test pass
STATUS=`cat ./1 | awk '{print \$4}'`
echo $STATUS


RSH 테스트는 해보지 않아서, 안되는 부분은 해결해 보심이...

STATUS=`rsh linuxx86svr0 "(/db2home/db2inst1/sqllib/bin/db2gcf -i db2inst1 -s | grep DB2 | awk '{print \$4}')"`

STATUS=`rsh localhost "(cat ./1 | awk '{print \$4}')"`
회원K 2013-02
상관없는 이야기지만 파이썬을 배워보고 싶습니다.
이런 것이 쉽게 된다고 해서요.


QnA
제목Page 3554/5721
2015-12   1751525   백메가
2014-05   5223501   정은준1
2013-02   5720   경박한시민
2013-02   5506   철부지
2013-02   5974   이현석1
2013-02   7752   정은준1
2013-02   5477   TSHA
2013-02   5808   2CPU2
2013-02   5866   김건우
2013-02   12356   뚜뚜김대원
2013-02   8968   정진환
2013-02   7204   윤치열
2013-02   5870   GoodWolf
2013-02   14731   잔디
2013-02   5226   방o효o문
2013-02   9897   김승권
2013-02   7949   이원재K
2013-02   6729   테슬라
2013-02   6186   박완경
2013-02   8315   소주한병
2013-02   6040   굴다리교
2013-02   10419   병맛폰