반응형

아래 Script는 Kuberentes Node의 IP Address를 얻어와서, 이 IP Address로 Node에 SSH 접속하여 'shutdown' 명령을 수행하는 예제이다.

 

#!/bin/bash

for ip in $(oc get nodes  -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}')
do
   echo "reboot node $ip"
   ssh -o StrictHostKeyChecking=no core@$ip sudo shutdown -r -t 3
done
반응형

Shell script를 작성하다보면, Random 숫자가 필요한 경우가 있다.

아래 예제 스크립트처럼 $RANDOM 변수를 사용하면, 매번 새로운 random integer를 구할 수 있다.

 

 

간단한 Example Script

#!/usr/local/bin/bash

for i in `seq 3`
do
    myrand=$RANDOM
    echo "Original random number: $myrand"

    mynum=$(expr $myrand / 1000)
    echo "Devided number: $mynum"
done

 

 

Random 초 만큼 쉬면서 CURL 명령을 반복 수행하는 Example Script

아래 예제는 실제로 ISTIO의 BookInfo 예제를 돌릴 때, 내가 종종 이용하는 Script이다.

 

#!/bin/bash

test_url="http://node-40.hub.cncf/productpage"

for i in $(seq 1 99999)
do
    curl -s -o /dev/null $test_url -: \
         -s -o /dev/null http://grafana.hub.cncf/?orgId=1 -:   \
         -s -o /dev/null http://tracing.hub.cncf/jaeger/search

    myrand=$RANDOM
    mysleeptime=$(expr $myrand % 7)
    printf "Run count: %d    (Sleep: %d seconds)\r" $i $mysleeptime
    sleep $mysleeptime
done
반응형
#!/usr/local/bin/bash

for i in $(seq 1 99)
do
    printf "Run count: %d \r" $i
    ## To do something at this line.
    sleep 0.5
done

Shell script로 for loop을 돌리면서, 'echo' 또는 'printf' 명령을 사용할 때 화면 아래로 text가 쭉 출력된다.

단순하게 count 값이 증가되는 것을 출력하는 것이라면, 아래로 쭉 내려가는 것보다는 같은 자리에서 counter 숫자만 갱신되는 것이 훨씬 예쁘다.

방법은 간단하다. C언어에서 사용한 것처럼 Carriage Return을 사용하면, 같은 자리에서 증분되는 counter만 출력할 수 있다.

 

아래 예제처럼 작성하고 돌려보시라 :D

 

 

 

+ Recent posts