ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 명령어 정리 (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 : 표현식3
    2. {
    if(표현식1)
    표현식2
    else
    표현식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" ;else
    print "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_test
    root: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

    댓글

Designed by Tistory.