본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
자기발전소/# Programming

bash Shell Script 개인 프로젝트 1.

by iamlucia 2020. 10. 11.

 

 

 

OpenStack 팩스택 설치 자동화를 위한 shell 스크립트 (feat.Dialog)


환경설정을 스크립트로.

1. UI를 기본과 다르게 만들고 싶은 욕망 

- $ sudo yum -y install dialog

- dialogrc 파일을 수정하여 color 값  ON으로 수정 및 GREEN 설정

 

2. 오픈스택 (allinone) 팩스택에 필요한 환경 설정 확인

 

참고: 오픈스택 팩스택 설치

4betterme.tistory.com/52?category=848820

 

3. 환경설정 스크립트 알고리즘 흐름도 구상

 

 

4. 필요한 값 추출하기 위한 shell script 문법 공부 및 테스트 

 

[tester@shell ~]$ systemctl status firewalld | grep Active: | awk '{print $2}'
active

 

[tester@shell ~]$ systemctl status selinux | grep Active: | awk '{print $2}'
Unit selinux.service could not be found.

 

Selinux는 단순히 systemctl 로 상태를 확인할 수 없으므로 파일 내용 안의 7번째줄의 값 추출  

$ cat /etc/selinux/config | sed -n 7p | awk -F '[=]' '{print $2}'
enforcing

 

이더넷

이더넷 수
$ ifconfig | grep -c ens 
2

이더넷 명
$ ifconfig | grep ens | awk -F: '{print $1}'
ens32
ens33


이더넷 CIDR 값 
$ ifconfig ens33 | sed -n 2p | awk '{print $2}' | awk -F. '{print $1,$2,$3}'
192 168 92

$ ifconfig ens33 | sed -n 2p | awk '{print $2}' | awk -F. '{print $1"."$2"."$3}'
192.168.92

숫자 더 할 때 이중괄호안에 있어야 함 ((i=i+1)) 

i=0
for file in /etc/sysconfig/network-scripts/ifcfg-e*;
do
  sudo mv $file /etc/sysconfig/network-scripts/ifcfg-eth$i
  (( i=i+1 ));
done

basename을 통해서 '경로'를 제외한 파일명만 추출 가능  

for file in /etc/sysconfig/network-scripts/ifcfg-e*;
do
  sudo ifup `basename $file`;
done

 

'파일명' 뿐만 아니라,

ifup eth0, ifup ens33 

이런 식으로 ifup 사용 가능 

sudo ifconfig | grep ens | awk -F: '{print $1}' > nic.txt
nics=$(cat nic.txt)

for nic in $nics;
do
  sudo ifup $nic;
done

 

 

😃오늘의 핵심 작업: shell script로 외부 인터넷 연결 가능한 NIC 추출

 

- 외부로 ping을 보낼 때의 그 출력값을 파일로 리다이렉션

- ping이 가능했을 때와 불가능했을 때의 차이를 기준으로 외부 연결가능한 nic찾기

 

분석 결과:   

외부로ping이 가능한 nic의 출력 txt파일에는 'icmp'라는 패턴이 등장하기 마련!

파일 내용을 분석하여 icmp 패턴을 가진 파일에 해당하는 nic을 external eth로 사용! 

$ ping -c 3  -I ens32 8.8.8.8 1> ens32.txt
$ ping -c 3  -I ens33 8.8.8.8 1> ens33.txt

 

 

for nic in $nics;
do
  sudo ping -c 3 -I $nic 8.8.8.8 1> $nic.txt
done

 

 

다음에 구현해야 할 것들 !

-

1. external nic 검색 시 아예 외부 연결 안 되는 경우에 대한 고려 : 분기 설정

2. NetworkScripts 내용 넣는 방법 : EOF 

 

-

😃 더 공부해야 할 것들: 파일 디스크립터 공부 😃

https://unix.stackexchange.com/questions/42728/what-does-31-12-23-do-in-a-script

 

'자기발전소 > # Programming' 카테고리의 다른 글

Python  (0) 2020.12.24
bash Shell Script 개인 프로젝트 2.  (0) 2020.10.12
if 중첩문 : elif  (0) 2020.06.22
Bash_shell script 함수 기초  (0) 2020.06.02
C 언어 기초 2  (0) 2020.05.05