2019년 6월 24일 월요일

shell script ip address 순차 증가 후 리모트서버 실행 스크립트

내가 원하는 것은 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

이게 정답이 아닌거 같은 느낌이 들지만

그래도 일단 써보고 개선 해야 겠다.

댓글 없음:

댓글 쓰기