shell 순환 대량 복귀 결과

한 스크립트 있고 가져오는 중 임시 파일 안의 IP/ 노드 정보 통해 다시 조사 스크립트 (이거 포장. 네, 지금 한 노드 한 노드) 가 가져오기 노드 jmx 상태.

#get app
function get_appinfo()
{
IFS=$'\n';
for info in $(cat /opt/oracle/sor/deploy/batch/Operate_temp/TMP_two_command.xn5452 |grep -v ^#);
do
ip=`echo $info | awk -F ";" '{print $2}' |awk '{print $3}'`;
instance_name=`echo $info | awk -F ";" '{print $2}' |awk '{print $4}'`;
echo "ip1=${ip} instance=${instance_name}";

#check node jmx_port status
Get_Jmx_status $ip ${instance_name}
if [ ${node_jmx_port_status} == "jmxportok" ]
then
echo "$ip ${instance_name}"
fi
done
}

#check app jmxstatus
function Get_Jmx_status()
{
app_ip=$1
instance_name=$2
if [[ -f ${jmx_status_file} ]]
then
sh /nfs/sor/script/tools/getJmxStatus/bin/getJmxStatus.sh ${app_ip} ${instance_name}

JmxResult=$?
#check result
if [ $JmxResult -eq 0 ]
then
node_jmx_port_status=jmxportok
return 0
else
node_jmx_port_status=jmxportfalse
return 1
fi
fi
}

function main()
{
get_appinfo
}

main

실행 결과
ip=192.168.165.39 instance=t-10
Check 192.168.165.39 jmxstatus t-10 : [OK]
192.168.165.39 t-10
ip1=192.168.165.31 instance=t-33
Check 192.168.165.31 jmxstatus t-33 : [OK]
192.168.165.31 t-33


이제 방법은 통해 for 순환 가져오기 노드 정보 때문에 단지 직렬 가져오기 노드 상태, 바꾸지 getJmxStatus.sh 스크립트 전제로 어떻게 쓴 실현 들어갈 수 같은 가져오기 for 순환 안에 두 IP 노드 jmx 상태???다음과 같이 하는 것처럼 보이다:
if [ ${node_jmx_port_status1} == "jmxportok" -a ${node_jmx_port_status2} == "jmxportok" ]
then
echo "do other script"
fi

글쓴이 Kang 작성일 2015-01-21 12:32

너는 이 일을 붙일 붙이고 말고 니 코드.매니토 들 다 좋아 것이니까

글쓴이 Kyong 작성일 2015-01-21 17:55

가져오는 중 임시 파일 안의 IP/ 노드 정보(192.168.165.39 t-10),또 조사 스크립트 getJmxStatus.sh, check 노드 상태 여부 OK.

#more TMP_two_command.xn5452
cd /opt/oracle/sor/deploy/batch;sh nfsbatchtomcatdeploy.sh 192.168.165.39 t-10 bgw /opt/oracle/sor/deploy/deployfile/SYS t /opt/ora
cle/tomcat/t-10/webapps/
cd /opt/oracle/sor/deploy/batch;sh nfsbatchtomcatdeploy.sh 192.168.165.31 t-33 bgw /opt/oracle/sor/deploy/deployfile/SYS t /opt/ora
cle/tomcat/t-33/webapps/

#조사 스크립트 CHECK JMX 상태, 만약 정상 은 복귀OK
sh /opt/script/tools/getJmxStatus/bin/getJmxStatus.sh 192.168.165.39 t-10
Check 192.168.165.39 jmxstatus t-10 : [OK]

전에 내가 방법은 통해 for 순환 가져오기 노드 정보 때문에 단지 직렬 가져오기 노드 상태, 바꾸지 getJmxStatus.sh 스크립트 전제로 어떻게 쓴 실현 들어갈 수 같은 가져오기 for 순환 안에 두 IP 노드 jmx 상태???다음과 같이 하는 것처럼 보이다:
if [ ${node_jmx_port_status1} == "jmxportok" -a ${node_jmx_port_status2} == "jmxportok" ]
then
echo "do other script"
fi

글쓴이 Kang 작성일 2015-01-21 19:19

function get_appinfo()
{
IFS=$'\n';
for info in $(cat /opt/oracle/sor/deploy/batch/Operate_temp/TMP_two_command.xn5452 |grep -v ^#);
do
let i++;
ip=`echo $info | awk -F ";" '{print $2}' |awk '{print $3}'`;
instance_name=`echo $info | awk -F ";" '{print $2}' |awk '{print $4}'`;
echo "ip1=${ip} instance=${instance_name}";

#check node jmx_port status
Get_Jmx_status $ip ${instance_name}
if [[ $i%2 -eq 1 ]]; then
node_jmx_port_status1=node_jmx_port_status;
elif [[ $i%2 -eq 0 ]]; then
node_jmx_port_status2=node_jmx_port_status;


if [ ${node_jmx_port_status1} == "jmxportok" -a ${node_jmx_port_status2} == "jmxportok"]
then
echo "$ip ${instance_name}"
fi
fi
done
}

글쓴이 Kyong 작성일 2015-01-21 19:20

강하다, 고맙다, 내가 좀 봐봐.

글쓴이 Kang 작성일 2015-01-21 19:21

위층에서 사용할 수 있는 방법.그리고 한 가지 문제가: 때문에 현실에서 get_appinfo 방법 안에 진 채 하나 더 이 순환 순환 방법을 통해 방법 끊임없이 자루 jmx_port 상태 가져오는 중

Check_Two_Node_Deploy_result_Loop ${app_ip} ${instance_name}

#check deploy result loop
function Check_Two_Node_Deploy_result_Loop()
{
local Check_Two_Node_Deploy_result_Count=0
while [ ${Check_Two_Node_Deploy_result_Count} -le ${Sleep_Index} ]
do
sleep ${Sleep_Duration}

Get_Jmx_status ${app_ip} ${instance_name}

if [[ ${node_jmx_port_status1} == "jmxportok" -a ${node_jmx_port_status2} == "jmxportok" ]]
then
Update_Node_Tmp_Deploy_Command ${app_ip} ${instance_name} ${app_name} ${instance_path} ${warpath_type}

fi

((Check_Two_Node_Deploy_result_Count++));
done
}

이렇게 되면 또 어떻게 실현? ? ? ?


감사합니다.

글쓴이 Kang 작성일 2015-01-21 19:21

정 안 나는 값 리턴 패스 좀 역시 반드시 실현될 수 있는

글쓴이 Kang 작성일 2015-01-21 19:22

./getJmxStatus.sh arg1 &
./getJmxStatus.sh arg2 &
wait

? ?

글쓴이 유진 작성일 2015-01-21 19:23

위층에 방법을 원하는 효과 아니야???이렇게 하면 안될 것 같은데,

글쓴이 Kang 작성일 2015-01-21 19:24

Get_Jmx_status $ip ${instance_name}
가져오기 노드 상태 을 만든 사이클, 다중 다운로드는, 판단 정상적인 되는데

글쓴이 Kang 작성일 2015-01-21 19:24

지금 싶은 while 순환 안에 세 번째 때 잠시 CHECK 상태 jmxportok 있으면 종료 첫 번째 for 순환, 실행, 두 번째 for 순환.만약 규정된 횟수 안에 가져오기 상태 이상 않으면 신고 끝내기; 없으면 문제가 있으면 따라 정상적인 절차 가.

function get_appinfo()
{
IFS=$'\n';
for info in $(cat /opt/oracle/sor/deploy/batch/Operate_temp/TMP_two_command.xn5452 |grep -v ^#);
do
let i++;
app_ip=`echo $info | awk -F ";" '{print $2}' |awk '{print $3}'`;
instance_name=`echo $info | awk -F ";" '{print $2}' |awk '{print $4}'`;
echo "ip=${app_ip} instance=${instance_name}";

#check deploy result loop
local Check_Two_Node_Deploy_result_Count=0
while [ ${Check_Two_Node_Deploy_result_Count} -lt ${Sleep_Index} ]
do
sleep ${Sleep_Duration}

Get_Jmx_status ${app_ip} ${instance_name}

if [[ $i%2 -eq 1 ]]
then
node_jmx_port_status1=${node_jmx_port_status};
elif [[ $i%2 -eq 0 ]]
then
node_jmx_port_status2=${node_jmx_port_status};
fi

if [[ ${node_jmx_port_status1} == "jmxportok" ]] && [[ ${Check_Two_Node_Deploy_result_Count} == "2" ]]
then
echo "1111111Update_Node_Tmp_Deploy_Command ${app_ip} ${instance_name} ${app_name} ${instance_path} ${warpath_type}"
break
elif [[ ${node_jmx_port_status2} == "jmxportok" ]] && [[ ${Check_Two_Node_Deploy_result_Count} == "2" ]]
then
echo "${app_ip} ${instance_name} ${app_ip} ${instance_name} all ok"
echo "22221Update_Node_Tmp_Deploy_Command ${app_ip} ${instance_name} ${app_name} ${instance_path} ${warpath_type}"
sleep 2
echo "Batch_Node_Deploy"
exit
else
echo "${app_ip} ${instance_name} ${app_ip} ${instance_name} not all ok"
fi

((Check_Two_Node_Deploy_result_Count++));
done

if [[ ${Check_Two_Node_Deploy_result_Count} -eq ${Sleep_Index} ]]
then
echo "Check_Send ${Check_One_Node_Deploy_result_Count} ${app_ip} ${instance_name} "
exit
fi
done
}

글쓴이 Kang 작성일 2015-01-21 19:25