이 글은 사실상 고수님들께 조언을 얻고자 올리는 것입니다.

회사에서 각 서버에 뭘 설치해야 하는데 IP, HOSTNAME 등을 인자로 넘겨줘야 합니다. 그런데 HOSTNAME은 바로 처리가 가능하지만, IP의 경우 NIC가 여러개 있다보니 번호로 선택할 수 있도록 bash 스크립트를 만들고 싶더군요.

윈도우에서는 제가 배치파일을 자주 짜다보니 이정도는 쉽게 처리하겠는데, 리눅스는 잘 몰라서 간단한 선택문인데도 만드는데 애를 먹었습니다.

일단 제가 만들어본 스크립트를 한번 봐주세요.

#!/bin/bash

ifconfig | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}' > iplist
numberofips=$(cat iplist | wc -l)

choosenumber() {
    clear
    echo
    echo
    echo "    ==== IP List ===="
    echo

    cat iplist | while read line; do
        let i=i+1
        echo "    $i - $line"
    done

    echo
    echo "    ================="
    echo
    echo -n " Choose the number : "
    read number
}

until [ "$number" -ge "1" -a "$number" -le "$numberofips" ]; do
    choosenumber
done
   
chosenip=$(cat iplist | sed -n "$number"p)

echo
echo
echo " You chose $chosenip"
echo
echo


아래는 실행하고 1을 선택한 결과입니다.



전체적인 동작 방식은

1. IP 리스트를 화면에 뿌려준다.
2. 번호를 선택하도록 한다.
3. 선택한 번호가 1보다 크거나 같고 IP 리스트에 뿌려진 갯수보다 작거나 같은 경우에만 sed로 해당 라인을 뽑아낸다.
   그 외 엉뚱한 숫자나 문자를 입력한 경우 2번 항목으로 다시 되돌아간다.


혹시 좀 더 효율적이거나 안정적인 선택문을 만들 방법이 있다면 조언해주시면 고맙겠습니다.
신고

  1. 곰발바닥
    2011.10.27 03:44 신고

    고수님도 어려울때가 다 있네요...

  2. BlogIcon hongyang
    2011.10.27 08:07 신고

    저는 x윈도우나 쓰고 있습니다... choosenumber은 듣지도 못했네요.

  3. skyface
    2011.10.27 23:53 신고

    안녕하세요~ 여기서 윈7 많은 도움을 받고 있는데요..
    질문할곳이 마땅히 안보여서 질문드려요~
    윈7 파일마다 이름이 있잖아요.. 이름이 길어서 끝에가 .... 이렇게 나오는데..
    XP에선 파일을 클릭 하면 파일이름이 전체가 보이는데 윈7은 그게 안됩니다..
    그래서 영화 받아놓고 자막여러개 받아놓으면 파일 끝부분이 안보여서 릴을 찾는게 힘들어요..
    그래서 우클리후에 속성가서 확인하는데.. 너무 번거 롭네요.. 이거 어떻게 해결해야 할까요..??
    참고로 아이콘 크기를 보통으로 해서요..

  4. BlogIcon !kKo
    2011.10.28 09:10 신고

    아주 조금 효율적으로 한다면 아래 라인을 한줄로도 만들수 있겠네요 ㅎㅎ

    echo -n " Choose the number : "
    read number
    ---------------------------
    read -p " Choose the number : " number

  5. BlogIcon !kKo
    2011.11.30 17:38 신고

    짬이 나서 좀더 개선한 버전을 만들어봤는데, 너무 늦었나요? ^^;

    이스케이프 캐릭터가 댓글에 먹지 않아서 포스팅으로 대신합니다.
    http://1kko.com/2460621

  6. BlogIcon focus sedan
    2012.11.14 01:49 신고

    연구 후 이제 귀하의 웹사이트에 블로그 게시물의 일부, 그리고 진정한 블로깅의 방법이 좋아요. 난 곧 내 북마크 사이트 목록에 북마크를 다시 확인합니다. PLS으로 내 웹 사이트를 확인하고 내가 뭘 생각하는지 알려주십시오.