내가 원하는 것은 2가지 였다
1. ip address 를 입력해서 순차적으로 ip address 시퀀스를 하나씩 증가
2. ip address가 연결이 가능할 경우 스크립트를 실행 하도록 명령어 실행
#!/bin/sh
suba=192
subb=168
subc=23
subd=100
ipaddr=$suba\.$subb\.$subc\.$subd # ip addr 이 잘 찍히는지 확인
echo "##########################" # 스크립트 시작 알림
while true # ip addr 가 얼만큼 있을지 모르니 계속 증가
do
subd=`expr $subd + 1`; # 변수 초기화에서 늘어 나는 ip submask로 증가
ipaddr=$suba\.$subb\.$subc\.$subd
echo "subd = $subd";
echo "ipaddr = $ipaddr";
sleep 1;
PING="`ping -c 1 -w 1 $ipaddr`"; # 핑 테스트 결과가 0 or 1 (0이 성공)
if [ $? -eq 0 ]; then # 핑 테스크가 성공 했을 경우
ipaddr=$suba\.$subb\.$subc\.$subd
echo "Prepared $ipaddr";
CMD=`sshpass -proot scp ./ip_get.sh root@$ipaddr:/tmp/`; # 원격서버에 파일 복사 (put)임
$CMD
sleep 1;
echo "deployed $ipaddr";
else
echo "stopped $ipaddr";
break # 핑 테스크가 실패 했을 경우 빠저나옴
fi
done
echo로 디버깅을 해서 프로그램에 문제점을 찾았다
--------------------------------------------------------------------------------------------------
지난 버전
--------------------------------------------------------------------------------------------------
#!/bin/sh
suba=192 # subnet a
subb=168 # subnet b
subc=23 # subnet c
subd=100 # subnet d
ipaddr=$suba\.$subb\.$subc\.$subd # ip address를 하나로 묶는다.
#echo $ipaddr
echo "##########################"
#CMD=`sshpass -proot scp ./ip_get.sh root@$ipaddr:/tmp/`
while true # ip adress 를 계속 증가 시키기 위한 반복문
do
echo "$ipaddr OK"
NETTEST=`ping -c 1 -w 1 $ipaddr` # ping을 통해서 서버가 살아 있는지 죽었는지 확인 한다.
if [ $? -ne 0 ]; then # ping에 대한 결과 값을 0, 1로 확인이 가능하고 0일 경우(정상) 반복 실행
echo "NO $ipaddr "
break
fi
subd=`expr $subd + 1`; # 1씩 증가
sleep 1;
ipaddr=$suba\.$subb\.$subc\.$subd # ip address 증가
CMD=`sshpass -proot scp ./ip_get.sh root@$ipaddr:/tmp/` #scp를 통해서 리모트서버에 파일 복사
$CMD
done
이게 정답이 아닌거 같은 느낌이 들지만
그래도 일단 써보고 개선 해야 겠다.
댓글 없음:
댓글 쓰기