리눅스 bash 선택문 만들기
2011. 10. 27. 00:00 |
리눅스
이 글은 사실상 고수님들께 조언을 얻고자 올리는 것입니다.
회사에서 각 서버에 뭘 설치해야 하는데 IP, HOSTNAME 등을 인자로 넘겨줘야 합니다. 그런데 HOSTNAME은 바로 처리가 가능하지만, IP의 경우 NIC가 여러개 있다보니 번호로 선택할 수 있도록 bash 스크립트를 만들고 싶더군요.
윈도우에서는 제가 배치파일을 자주 짜다보니 이정도는 쉽게 처리하겠는데, 리눅스는 잘 몰라서 간단한 선택문인데도 만드는데 애를 먹었습니다.
일단 제가 만들어본 스크립트를 한번 봐주세요.
아래는 실행하고 1을 선택한 결과입니다.
전체적인 동작 방식은
1. IP 리스트를 화면에 뿌려준다.
2. 번호를 선택하도록 한다.
3. 선택한 번호가 1보다 크거나 같고 IP 리스트에 뿌려진 갯수보다 작거나 같은 경우에만 sed로 해당 라인을 뽑아낸다.
그 외 엉뚱한 숫자나 문자를 입력한 경우 2번 항목으로 다시 되돌아간다.
혹시 좀 더 효율적이거나 안정적인 선택문을 만들 방법이 있다면 조언해주시면 고맙겠습니다.
회사에서 각 서버에 뭘 설치해야 하는데 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번 항목으로 다시 되돌아간다.
혹시 좀 더 효율적이거나 안정적인 선택문을 만들 방법이 있다면 조언해주시면 고맙겠습니다.
'리눅스' 카테고리의 다른 글
리눅스에서 윈도우 start 명령어와 비슷한 효과를 (2) | 2012.01.30 |
---|---|
윈도우에서 작성한 Shell 스크립트 리눅스에서 에러나는 경우 (7) | 2011.12.24 |
리눅스에서 iSCSI Target에 연결하는 방법 (13) | 2011.11.29 |
리눅스 아파치 웹서버 구축하기 - XAMPP (20) | 2011.11.21 |
리눅스 추천 SSH 클라이언트 - Xshell (14) | 2011.09.25 |
리눅스에서 Ping 테스트시 시각 표시하기 (2) | 2011.09.25 |
리눅스 서버 root 패스워드 한꺼번에 변경하기 (7) | 2011.06.11 |
Citrix XenCenter에서 리눅스 싱글모드 부팅 - root 패스워드 초기화 (7) | 2011.05.16 |
최근에 달린 댓글 최근에 달린 댓글