1) ostype 문자열이 fedora가 되도록 다음 소스를 변경하세요. 지금 현재는 rhel fedora 문자열이 검색되는 소스입니다.
먼저 cat /etc/*release의 긴 결과문 부터 마지막 awk사용하여 fedora 로 출력 되기까지 차례대로 걸러보자.
1.cat만사용
실행문
ostype1=$(cat /etc/*release)
echo "$ostype1"
결과문
CentOS Linux release 7.9.2009 (Core) NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE=
"rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe
:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/
" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT=
"centos" REDHAT_SUPPORT_PRODUCT_VERSION="7" CentOS Linux release 7.9.2009 (Core) CentOS Linux re
lease 7.9.2009 (Core)
2.cat | grep
실행문
ostype2=$(cat /etc/*release| grep ID_LIKE)
echo "$ostype2"
결과문
ID_LIKE="rhel fedora"
3.cat | grep | sed
실행문
ostype3=$(cat /etc/*release| grep ID_LIKE | sed "s/ID_LIKE=//;s/\"//g")
echo "$ostype3"
결과문
rhel fedora
4.cat | grep | sed | awk
실행문
ostype4=$(cat /etc/*release| grep ID_LIKE | sed "s/ID_LIKE=//;s/\"//g" | awk '{print $2}')
echo "$ostype4"
결과문
fedora
sed 까지 했을때의 출력문 "rhel fedora" 에서 awk 를 사용하여
공백을 기준으로 첫번째 필드 "rhel" 두번째 필드 "fedora" 로 구분한다.
awk '{print $2}' 를 사용하여 두번째 필드만 뽑아 "fedora"만 출력 할 수 있다.
awk는 $1 $2 를 " " 공백을 기준으로 구분한다.
2) 네트워크 정보를 사용자로부터 입력 받을 때, ip4.address=192.168.122.10/24 의 형태를 이용하여 netmask= 255.255.255.0 값을 받는다. 만약 netmask 값이 255.255.255.192 라면ip4.address 값을 어떻게 입력하여야 하나요 ?
IP주소 뒤에 /24 가 붙어있는데 이는 Prefix(접두어)로 서브넷 마스크의 bit수를 의미한다.
255.255.255.0을 해석하면 한 옥탯의 8bit가 모두 1일 경우 10진수로 255가 되기에 /24는 왼쪽부터 나열된
1bit의 수가 24개라는 뜻이다. --> 11111111.11111111.11111111.00000000
따라서 netmask값이 255.255.255.192 이라면
11111111(255).11111111(255).11111111(255).11000000(192)이므로
1bit의 수는 26개이다 .
답 : ip4.address=192.168.122.10/26
3) 원격 서버인 아퀼라 시스템에서 which 명령으로 ip 명령어의 경로를 찾을 수 있고 echo $PATH 조회도 되는데, 유독 쉘스크립트를 실행하면 IP: command not found 에러 발생한다. 쉘스크립트 소스를 변경하여 에러를 제거하세요.
상황 : ip: command not found 에러 발생
탐색 : command not found 에러는 보통 사용하고자 하는 명령어의 경로를 찾지 못하였을때 발생한다.
사용하는 명령어도 결국 실행파일인데 환경변수에 명령어실행 파일들의 경로가 저장되어 있지 않으면 에러가 발생한다.
(참고로 본 서버에서 ip명령어는 정상작동된다.)
해결 : 본 서버에서 정상실행되는 ip 명령어가 ssh 로 다른서버에서 작동이 안되었기에 그서버에 환경변수 PATH를 새로 선언해 준다.
export PATH=$PATH; #export를 사용하여 타 서버 환경변수 시스템 경로 선언
19 down_link=$(ssh gtiger@$host "export PATH=$PATH; ip link show | grep $grep_nic | grep 'state DOWN' | awk -F ': ' '{print \$2}'")
20 down_link_cnt=$(ssh gtiger@$host "export PATH=$PATH; ip link show | grep $grep_nic | grep 'state DOWN' | wc -l")
'22년 가을학기 > 유닉스 고급' 카테고리의 다른 글
9.사용자 관리 쉘스크립트 (0) | 2022.11.27 |
---|---|
7. 쉘스크립트 실무 (0) | 2022.11.13 |
6.쉘스크립트 중급 (0) | 2022.11.05 |
5.파일 처리 명령어 (0) | 2022.10.13 |
4.문자열 검색 명령어 (0) | 2022.09.29 |