네트워크/virual_box_freeBSD실습

6월 15일 syslog, 정규식 표현 실습

송시혁 2018. 6. 15. 10:40



pw useradd user1 -m //home directory 

tail /etc/passwd 마지막 10줄

tail -n 5 /etc/passwd

 -f 계속 유지한채로 보여주는 옵션 

반대는 head





가상 시스템 import하는것. 다시 포스팅 



아래 설정은 중요해서 한 번 더 포스팅. 저거를 하지 않으면 같은 MAC주소를 부여 받을 수도 있다.


같은 가성머신(가상컴퓨터)끼리 같은 네트워크로 설정해주자.


임의로 선택된 2개 가상머신을 그룹화 시킬수도 있다.

syslog 실습 절차는 지난주와 똑같다. 


syslog

=> 로그를 기록하는 파일.

로컬에다 저장가능.


syslogd = syslog를 운용하는 서버



Logging


sylog

upd 트래픽 

- 네트워크 부하가 생기면 로그 분실 가능, 원격으로 다른 PC에 저장 가능.


log server 구성

/etc/rc.conf

 syslogd_flags = '-a(클라이언트 CIDR):*'     #flags(옵션) allow(허용)

 

 

 서버로 구동하는데 로그 메시지를 클라이언트 목록 

 IP 적고 /24

 * = 모든 서비스를 전부 받겠다는 의미.


그리고 반드시 수정한 파일은 restart한다.


서버에서 수정한거

=> service rc.conf restart


클라이언트 수정한거 

=> service syslogd restart


과정은 생략하고 실행결과만 포스팅 하겠다. 


tail -f /var/log/auth.log파일을 실행한다. -f 계속 유지한채로 보여주는 옵션

auth.log파일에 클라이언트 인증접속 기록이 쌓인다.



일부러 접속 3회 오류


서버에서 실행한 auth.log 모습. 



정규식( Regular Expression ) Sed / Awk


< Sed >

Stream Editor


문자열 흐름(stream)을 받아 처리


라인 단위 입 /출력

*ed


< Awk >


●패턴에 의한 탐지 /처리 언어


● Sed와 유사한 용도



< 정규식(Regular Expression) >


● 문자열 검색하고


● 교체(수정)될 문자열의 지정


● grep, egrep


● 플랫폼, 버전별 검색하고


< 정규식 >

^    라인의 시작

$    라인의 끝

.    문자하나(\n 포함여부는 경우에 따라 다름 )

*    선행하는 패턴(문자)의 0번 또는 다수 반복  ex)a* a,aa,aaa.., 없어도 가능 

+    선행하는 패턴(문자)의 1번 또는 다수 반복  ex)a+

?    선행하는 패턴(문자)의 0번 또는 1번의 사용

|    OR 

[]   사용가능한 문자 범위 지정              [a-z],[a-z|A-Z|0-9], 

[^]  사용가능한 문자 범위 지정 반전         [^a] 사용 불가능한것. 

{n}  선행패턴의 n번 반복                    [a-z]{3} 

{n,} 선행패턴의 n번 또는 그 이상의  반복    [a-z]{3,}  

{n,m}   선행패턴의 n번 ~ m번 반복           [a-z]{3,5}





grep -E '^A' words(-E)

=> A로 시작하는 목록을 찾아준다. 


grep -E '^A' words => 


grep -E '^A.' words => 대문자 A로 시작되고 최소한 길이가 문자 하나가 있어야 함.


grep -E '^A.$' words = > 길이가 2개인것만 나온다. A와 끝문자만 나온다. 


grep -E '^A.{3}$' words => 대문자 A로 시작되고 다음에 3개인 문자까지 출려.


popernames - 사람이름 정의 





x로 끝나는 이름의 목록

=> grep -E 'x$' propernames | head


x를 포함하는 이름의 목록

=> grep -E '[x]' propernames

=> grep -E  'x' propernames

=> grep -E  'x.+' propernames


알파벳 5개로 구성된 이름의 목록을

=> grep -E '^[a-z|A-Z]{5}$' propernames


주석 제거된 파일의 내용


grep -E '#' apmd.conf

grep -E '^[^#]' apmd.conf



<sed>


■ 단순 문자열 패턴의 매칭에 그치지 않고

■ 특정위치에 문자열을 삽입,

특정위치, 특정 문자열 패터의 삭제

특정위치, 특정 문자열 패턴의 수정


cat -n /usr/share/dict/words

라인과 같이 출력 


500_words에 a또는 A로 시작하는 5자리 알파벳 출력.


=> grep -E '^ *[0-9]+.[Aa].{4}'


500_words가 (공백)123(탭)AAxxxx 이라는 형식으로 저장되어있다.

그래서 ^시작해서 공백(스페이스바),  *은 숫자(라인)가 반복되거나 반복이 안될 수 있으므로(예를 들어 198, 199등..)

[0-9] : 숫자

그리고 + 탭키 한번 .[Aa] A또는 a가 추가되어있으므로 {4}로 입력하여 5자리만 출력한다. 굉장히 어렵다 ㅜㅜ


/usr/share/dict/words파일에 500줄만 복사해서 새로운 파일인 500_words에 추가한다. 상위 500개 라인을 라인 넘버를 표시하여 500_500word로 저장 


cat -n은 라인까지 텍스트 파일에 출력.



<정규식 실습>

정규식을 사용하여 아래와 같이 #PermitRoot Login no를 yes로 바꿔보자

set 's/PermitRootLogin no/PermitRootLogin yes/' /디렉토리/파일명을 입력하면 된다.





cat 명령어를 사용하여 sed 파일을 만든 뒤, 정규식 명령어를 넣어 적용시키는 것도 가능하다.


i/ 해당 라인 위에 삽입. append가 뒤쪽에 추가라면 삽입은 앞쪽에 추가 개념이다.  


아래 그림처럼 495라인 위에 삽입된다. 



495라인에 전체를 바꾸었다.

c\를 사용하면 아래와 같이 적용된다. 


awk를 응용하여 

이번에는 ifconfig 를 조회하면서 ipv4만 출력해보자.


환경변수에 3번째 목록 보이기.




cut 명령어를 써도 가능하다.