반달가면
Posts
427 posts[bash: $()] 역따옴표(`)를 중첩해서 사용하고 싶을 경우
리눅스 bash shell에서 특정 명령어의 결과를 변수에 할당하거나 다른 명령어의 인자(argument)로 사용하고 싶을 때 역따옴표(`)를 사용하게 된다. # ls 명령의 결과 출력에서 마지막 줄을 변수 x에 할당 x=`ls | tail -1` 그런데, 역따옴표 안에 다시 역따옴표를 사용하고 싶은 경우가 생겼을 경우에는 대신에 "$(명령어)" 형태를 사용하면 되겠다. 기능은 역따옴표와 동일하나 중첩해서(nest) 사용할 수 있다. # ls 명령의 결과 출력에서 마지막 줄을 변수 x에 할당 x=$(ls | tail -1) 예시가 좀 억지스럽긴 한데 겹쳐서 사용하는 경우를 만들어 보자면 아래와 같이 해 볼 수 있을 것이다. # 문자열 "txt"를 출력해서 grep의 인자로 사
우분투 14.04 기반 배포판에서 와이어샤크 2.6.7 설치 (소스코드에서 설치)
우분투 14.04의 공식 S/W저장소에서 제공하는 와이어샤크(wireshark)의 버전은 2.6.6인데, IP주소 위치정보(GeoIP)를 사용할 수 있는 "MaxMind DB resolver"가 제외된 채로 컴파일되어 있었다. 와이어샤크에서 IP주소 위치정보를 사용하는 방법은 이전 게시물을 참고하자. 여기로 IP주소 위치정보를 사용하기 위해 wireshark 공식 홈페이지에서 2.6.7 소스코드(source code)를 다운로드하여 수동 설치를 해 보았다. 생각보다 꽤 번거롭긴 하나, 어쨌든 설치 과정은 아래와 같다. 소스코드를 컴파일하기 위해서는 사전 작업이 좀 필요하다. 아래와 같이 몇가지 S/W를 설치한다. # S/W저장소 정보 갱신 sudo apt-get update # 패키지
[bash: csplit] 설정한 기준에 따라 텍스트 파일 분할하기
csplit은 리눅스에서 기본적으로 제공되는 파일 분할 프로그램이다. 특정 행번호, 또는 특정 문자열을 기준으로 파일을 분할해야 하는 경우에 사용한다. csplit의 인자(argument)는 아래와 같이 지정한다 csplit [옵션] [입력 파일] [패턴] 자주 사용하는 옵션은 아래와 같다. -f: 분할된 출력 파일 이름 지정 -z: 결과중에 크기가 0인 파일은 삭제 -k: 오류가 발생할 경우에도 이전까지 생성된 분할 결과 파일 유지(-k 옵션이 없으면 오류 발생시 출력 결과가 삭제된다.) 패턴은 행번호 또는 정규표현식(regular expression, regex), 그리고 반복 회수를 지정할 수 있다. 몇가지 예시를 통해서 살펴보자. 예시에 사용할 파일 sample.t
tshark에서 pcap 파일에 대한 프로토콜 계위(protocol hierarchy) 통계 출력
tshark에서 pcap 파일을 읽어서 프로토콜 계위(protocol hierarchy) 통계를 출력하는 방법이다. 통계는 -z 옵션으로 지정하는데, tshark 에서 기본적으로 출력해 주는 패킷 목록은 볼 필요가 없이 통계치에만 관심이 있으므로 패킷 목록 출력을 비활성화하는 -q 옵션을 추가해 주자. -z 옵션에서 지정할 수 있는 통계의 종류중에 프로토콜 계위에 대응하는 인자(argument)는 "io,phs"이다. test.pcap 파일에 대한 프로토콜 계위 통계 출력은 아래의 예시와 같이 하면 되겠다. # test.pcap 파일의 protocol hierarchy tshark -r test.pcap -q -z io,phs 특정 프로토콜만 선별해서 프로토콜 계위를 출력할 수도 있다
리눅스에서 cp 명령으로 복사를 하다가 중단한 것을 나중에 재개하는 문제
cp 명령으로 복잡한 디렉토리 구조의 엄청 많은 파일을 복사하던 중에 시간이 없어서 중단하고 내일 다시 이어서 복사를 진행해야 하는 상황이 벌어졌을 경우에 대한 내용이다. 가끔 이런 일이 벌어지는 관계로 작업 절차를 정리해 두기로. # ~/src 디렉토리의 내용 전체를 ~/backup 디렉토리로 복사 cp -r ~/src ~/backup 예를 들어 ~/src 디렉토리를 ~/backup 디렉토리 하위에 복사를 하고 있던 중에 ctrl-c 눌러서 중단을 했는데, 이미 복사된 것들을 다 지우고 다시 처음부터 복사하자니 그동안 들인 시간이 아깝다. 문제는 파일이 워낙 많다 보니, 대체 어느 파일을 복사하다가 중간에 끊어졌느냐를 찾아야 한다는 점. find 명령을 이용해서 ~/backup 하위에서


