-
리눅스 명령어 정리 (3)Pentesting/Linux 2019. 2. 13. 09:51▷ awk:awk프로그램은 입력으로부터 한 줄씩을 읽어서 정규표현식으로 조건이 맞는지를 검사하고 참으로판명되면 그 줄에 대해 명령어를 실행하는 형식[문법]: awk '표현식 {액션}' 파일 , awk -f [awk 명령 스크립트 파일] 파일>ls -l " awk '{print NR, $0}'- 구분자를 지정하는 옵션은 -F (예를들어 /etc/passwd 파일의 경우 지정자를 콜론(:) 사용)- /etc/passwd 파일을 awk 명령어의 -F 옵션을 이용해 콜론(:)으로 필드를 구분하고 문자열이 user로 시작하는 행의 첫번째($1), 여섯 번째 필드($6)를 표시하라는 스크립트>cat /etc/passwd | awk -F: '/^user/{print $1,$6}'[정규표현식]^ 라인의 처음$ 라인의 끝. 문자 한 개[] 하나의 문자 매치[^] 문자열에 포함된 문자는 제외| 전.후 문자열 중에서 하나를 선택(or);& 검색 문자열을 치환+ 앞의 문자를 1회 이상 포함; a+b는 ab,aab,aaab,를 포함하지만 b는 포함 하지 않음.* 앞의 문자를 0회 이상 포함; a*b는 b, ab, aab, aaab를 포함[awk의 조건문]1. awk 표현식1 ? 표현식2 : 표현식32. {if(표현식1)표현식2else표현식3}- 파일 시스템 사용률이 10% 이상인 파일 시스템을 추출하는 스크립트df -k 명령어를 이용해서 파일 시스템 전체의 사용량을 KB단위로 확인해보니 사용률이 10% 이상인파일시스템은 /boot 파일 시스템인 것을 알 수 있음.> df -k | grep -v Filesystem | sed -e s/%//g | awk '$5 > 10 {print $0}'해설grep -v Filesystem : 불필요한 행을 삭제하기위해 Filesystem 문자열이 포함된 행을 제거sed -e s/%//g : 명령 실행 결과에 포함되어 있는 퍼센트(%) 기호를 제거awk '$5 > 10 {print $0}' : 퍼센트(%) 기호가 제거된 5번째 필드($5)의 값중 10을 초과하는 파일시스템 표시> grep '^Listen' /etc/httpd.conf | awk '{if($2 == 80) print "Http Service Port is 80" ;elseprint "Http Service Port is Not 80"}'Http Service Port is 80[awk 의 BEGIN / END 표현식]:awk에서 BEGIN 표현식은 입력되는 텍스트 라인들을 처리하기 전에 실행./etc/passwd에서 user로 시작되는 첫 번째, 여섯 번째 열을 출력하기에 앞서 User / Home Dir이란타이틀 작성한 예제>cat /etc/passwd | awk -F: 'BEGIN{print "User / Home Dir"};/^user/{print $1,$6}':END 표현식은 BEGIN 표현식과 반대로 awk의 모든 표현식이 종료되면 처리>cat /etc/passwd | awk -F: 'END{print "- END -"};/^user/{print $1,$6}'[파이프라인]:파이프 라인을 사용할 수 있는데 파이프 라인 이후에 오는 명령어는 반드시 큰따옴표("")로 묶어야 됨>cat /etc/passwd | awk -F: '/[nologin]$/{print $1 | "sort"}'- /etc/passwd에서 라인의 끝이 nologin인 계정을 오름차순으로 정렬. 즉, 시스템에 로그인을 못하게설정한 계정을 확인하는 스크립트▷ 스트림 편집기 sed[문법]: sed [연산자]- 파이프를 이용해 앞에 있는 명령어 a의 겨과를 처리하여 명령어 b로 전달하는 형태로 많이 활용명령어a | sed [연산자] | 명령어b- 파이프에 의한 처리뿐만 아니라 하나 이상의 편집 명령을 실행할 때는 -e 옵션을 이용하며,여러 연산자를 연속해서 처리 가능sed -e [연산자1] -e | [연산자2]※특징1. sed는 편집하고 있는 파일을 바꾸지 않는다.2. sed의 연산자들은 입력받은 모든 라인에 적용된다.[옵션]: -n 지정된 문자열과 일치하는 라인만 출력, -e -e옵션 다음에 기술되는 문자열을 편집 명령어로 인식-f 편집할 명령어 및 연산자를 파일에서 읽어서 처리[연산자][범위]/p 지정된 범위를 출력한다.[범위]/d 지정된 범위를 삭제한다.s/문자/문자2/ 한 라인에 처음 나타난 문자를 문자2로 치환한다[범위]/문자/문자2/ 지정된 범위의 처음 나타난 문자를 문자2로 치환한다.g 모든 라인에서 입력과 일치하는 패턴에 동작[정규표현식]^ 라인의처음$ 라인의 끝[] 하나의 문자 매치& 검색 문자열을 치환\< 단어의 시작\> 단어의 끝x\{m,n\} m회~n회 사이 반복[TEST]- /test/sed_test 파일의 내용 중 라인의 처음에 문자열 root가 포함된 라인만 출력되도록 -n 옵션>cat -n sed_test..............~~~>sed -n "\^root\p" sed_testroot:x:0:0:root:/root:/bin/<wbr />bash- /test/sed_test 파일의 내용 중 1번부터 19번 라인을 삭제>cat -n sed_test | sed 1,19d- /test/sed_test 파일의 내용 중 문자열 user가 포함된 라인을 ShellScript로 문자열을 치환하고,nologin이 포함된 문자열을 모두 삭제>cat -n sed_test | sed -e 's/user/ShellScript/g' -e '/nologin/d'
'Pentesting > Linux' 카테고리의 다른 글
peda 설치 및 명령어 (0) 2019.11.14 웹서버 access 로그 분석 구문 (0) 2019.10.23 간단한 명령어 반복 실행 스크립트 (0) 2019.08.07 리눅스 명령어 정리 (2) (0) 2019.01.17 리눅스 명령어 정리 (1) (0) 2019.01.17 댓글