몇일전에 디스크 전체를 파티션 하나로 잡고 리눅스를 설치하였습니다. 그런데 윈도우도 설치할 필요가 있어서 멀티부팅으로 해야 할 상황이 생겼습니다. 그러나 디스크는 전체가 이미 파티션으로 잡혀 있어서, 파티션 재조정을 하였습니다. (아무것도 없이 새로 설치한 것이라 다시 재 설치하면 되었지만 그게 귀챦았습니다 ^^ ) 데이터 유실 없이 간단히 할 수 있는 방법으로 Gparted 를 이용하는 것입니다. resize2fs 를 이용하기도 하나, GUI 기반으로 쉽게 이용할 수 있는 Gparted 를 추천합니다.
자리에 굴러다니는 Rescue 시디가 하나 있어서 부팅해 보았더니 gparted 가 있어서 실행하여 파티션을 Resize 시도하였습니다.
그런데 실패했습니다. 이상한 부분이 있긴 했었습니다. Ext4 파일시스템 인데 위 그림과 같이 Ext3 로 나오는 것이었습니다. 버전이 오래된 것이라 제대로 지원을 하지 않나 봅니다.
다시 Gparted 를 다운로드 받았습니다.
http://gparted.sourceforge.net/
저는 이게 ISO 부팅 으로도 파일을 지원하는지 몰랐는데, 있더군요 ^^
간단히 해당 시디로 부팅을 하고 보면 파일시스템도 Ext4 로 완벽하게 인식됩니다. 파티션 Resize 를 선택하고 용량을 줄이고 재조정을 끝냈습니다. 그리고 남은 파티션 영역쪽에 윈도우를 설치하여 멀티부팅을 할 수 있었습니다.
파티션 재조정이 필요한 경우에 gparted 를 떠올려 보세요. 윈도우 환경의 여러 도구들도 많지만, 리눅스 유저라면...
참고로, 데이터 유실이 발생할 수 도 있는 가능성이 있을수도 있으므로 백업을 받고 진행하는 것이 좋습니다. 혹시라도 모를 미연의 사태를 방지하기 위하여 ㅜㅜ
4월의 마지막 불타는 금요일 잘 보내세요 ^^
2013년 4월 26일 금요일
2013년 1월 11일 금요일
*NIX 에서 데이터 안전하게 지우기 (Wiping)
집안에 쌓여있는 오래된 하드디스크들이 있다. 40G, 80G, 160G 몇년전에는 이 숫자가 커 보였지만 이제는 너무 작아져 버렸다. 2테라 하드도 구입하고 겸사 겸사 처분하기로 마음 먹었다. 처분하기 전 디스크의 데이터는 깔끔하게 지우는 것이 좋다.
흔히 파일을 삭제하거나, 포맷을 했다고 해서 데이터가 완벽히 사라진 것은 아니다.중요한 데이터라면 안전하게 지우기 위한 방법이 필요하다. 윈도우에서 도구는 한번 소개한 적이 있는데, 오늘은 *NIX 에서 쉽게 사용할 수 있는 도구 몇개를 알아보자.
1) Wipe
Linux 2.* 버전및 AIX, Sun, BSD 계열등에 포함되어 있는 작은 커맨드 유틸리티이다. 설치되어 있지 않은 경우는
# apt-get install wipe (or aptitude install wipe)
사용방법은 wipe [options] path1 path2 와 같이 지정해 주면된다.
기본은 34번 Wiping 을 하지만 -q 는 퀵 모드로 좀더 적게 수행한다.
# wipe /dev/sda1
2) Shred
wipe 와 비슷하게 사용가능하다. -n 는 디폴트 25 번 대신 몇번을 덮어쓰기를 할지 지정하고 -s 는 얼마크기로 와이핑 할지 정한다. -v 옵션을 사용하면 진행상황을 좀더 볼 수 있다.
# shred file1 file2 file3
# shred -v /dev/sda1
3) Secure-Delete tools
다른 도구에 비해 몇가지 도구를 더 포함하고 있는데 파일, 여유공간, 스왑, 메모리를 안전하게 삭제할 수 있는 도구를 따로 제공한다.
# apt-get install secure-delete
와 같이 설치할 수 있다. 패키지는 다음과 같이 구성되어 있다.
- srm : 디스크에서 파일 이나 디렉토리를 삭제하는 경우
- smem : 컴퓨터 메모리의 데이터를 삭제하는 경우
- sfill : 디스크에서 Free 공간의 데이터를 삭제하는 경우
- sswap : 스왑 파티션의 데이터를 삭제하는 경우
Wiping 을 하는데는 많은 시간이 소요된다. 물론 디스크 크기가 크면 클 수록 시간은 크게 늘어난다. 40G, 80G 를 와이핑 하는데도 꽤 많은 시간을 소요했다. 더불어 디스크를 계속 사용하므로 수명에 영향을 줄 수도 있다. :-)
2012년 12월 12일 수요일
vi 에서 ^M 문자열 지우기와 유닉스 포맷으로 변경
윈도우에서 만들어진 데이터를 가져와 *NIX 시스템에서 사용하다 보면 윈도우 캐리지 리턴 값이 들어가 있는 경우가 있다. 해당 파일을 열어 보면,
blablabla^M
blabla^M
와 같이 끝에 ^M 에 붙어 있는 것이다. 쉽게 사용할 수 있는 방법은 vi 에디터에서
:%s/^M//g
로 다 제거해 버리면 된다. 여기서 주의할 점은 ^M 이 그냥 입력하면 안되고 Ctrl + v + m 으로 입력해 주어야 한다.
이외 텍스트파일을 검색해서 사용하려고 하는데, 이상하게도 해당 데이터가 들어있는데도 불구하고 검색이 되지 않는 것이었다. vi 로 열어보니 아래와 같이 나온다.
" test-dataset.txt" [dos] 999715L, 16340756C
[dos] 라고 표시가 되고 있다. 이럴때는
:set ff=unix
로 설정하고 w 로 저장해 주면 된다.
윈도우와 *NIX 시스템 사이에 데이터를 주고 받는 과정에서 쉽게 발생될 수 있는 일이므로 알아두자.
blablabla^M
blabla^M
와 같이 끝에 ^M 에 붙어 있는 것이다. 쉽게 사용할 수 있는 방법은 vi 에디터에서
:%s/^M//g
로 다 제거해 버리면 된다. 여기서 주의할 점은 ^M 이 그냥 입력하면 안되고 Ctrl + v + m 으로 입력해 주어야 한다.
이외 텍스트파일을 검색해서 사용하려고 하는데, 이상하게도 해당 데이터가 들어있는데도 불구하고 검색이 되지 않는 것이었다. vi 로 열어보니 아래와 같이 나온다.
" test-dataset.txt" [dos] 999715L, 16340756C
[dos] 라고 표시가 되고 있다. 이럴때는
:set ff=unix
로 설정하고 w 로 저장해 주면 된다.
윈도우와 *NIX 시스템 사이에 데이터를 주고 받는 과정에서 쉽게 발생될 수 있는 일이므로 알아두자.
2012년 11월 4일 일요일
리눅스 패키지 포맷 다른 패키지 포맷으로 변환하기
![]() |
| 이미지 출처: http://tenoch.scimexico.com |
사용하고자 하는 프로그램이 특정 패키지로만 제공되는 경우 다른 패키지로 변환하여 설치가 가능한 방법이 있다. Alien 은 다른 리눅스 패키지 포맷 형태로 변환해 준다.
예를 들어, NMAP 의 경우 RPM 으로 패키지를 제공해 준다. 소스를 다운로드 받아 설치할 수도 있고, 기존 배포판을 이용하는 방법도 있을 수 있겠지만, 리눅스 배포판은 항상 최신의 버전을 제공하지는 못한다.
Alien 은 RPM, deb, slp, pkg, tgz 의 패키지 형식을 지원하며, 사용방법도 아주 간단하다.
데비안 계열이라면 우선 apt-get 를 이용해 쉽게 alien 을 설치할 수 있다.
#apt-get install alien
다운로드 받은 rpm 패키지를 deb 로 변경하는 경우 다음과 같이만 해 주면 된다. 옵션을 따로 지정하지 않은 이유는 deb 가 디폴트이기 때문이다.
#alien xxx.rpm
xxx.deb 가 만들어질 것이고 dpkg 를 통해 해당 패키지를 인스톨 해 주면 된다.
#dpkg -i xxx.deb
이제 패키지 포맷에 신경쓰지 말고 편하게 이용해 보자.
2012년 5월 2일 수요일
*NIX 콘솔 기반 네트워크 사용량 표시 도구 - nload
현재 네트워크 사용량을 표시해주는 nload 를 소개한다. 사실 너무나도 많은 도구들이 있는데, 그래도 이런 형태의 도구는 있다고 알아두면 좋기 때문에 이름만은 기억해 두자. 'nload' 는 콘솔 기반의 프로그램으로 실시간으로 네트워크 상태를 표시해 준다. 아스키 형태의 그래프로도 말이다.
크게 Incoming/Outgoing 으로 화면이 나뉘어져 있으며 옵션은 다음과 같다.
디바이스가 여러개 있는 경우 -m 으로 한번에 표시할 수 있으며, -t 로 화면의 Refresh 시간을 지정할 수 있다. 기본 값은 500 밀리세컨드 이다. 참고로 만약 100 밀리세컨드 이하로 값을 지정하면 빈번하게 계산해야 하기 때문에 부정확해 질 수도 있다는 점은 알아두길 바란다.
-u 로 트래픽 수치 표현 방법을 지정할 수 있다. 비트, 킬로비트, 메가 비트등의 옵션이 있다.
F2 키를 누르면 옵션 화면이 나타나서 설정 값등을 볼 수 있으며, 이동키를 통해 움직일 수도 있다.
다운로드는 다음 경로에서 가능하다
http://www.roland-riegel.de/nload/
데비안 계열 사용자는 apg-get install nload 로 쉽게 설치할 수 있다.
크게 Incoming/Outgoing 으로 화면이 나뉘어져 있으며 옵션은 다음과 같다.
nload [-a period] [-i max_scaling] [-m] [-o max_scaling] [-t interval][-u h|H|b|B|k|K|m|M|g|G] [-U h|H|b|B|k|K|m|M|g|G] [devices]
디바이스가 여러개 있는 경우 -m 으로 한번에 표시할 수 있으며, -t 로 화면의 Refresh 시간을 지정할 수 있다. 기본 값은 500 밀리세컨드 이다. 참고로 만약 100 밀리세컨드 이하로 값을 지정하면 빈번하게 계산해야 하기 때문에 부정확해 질 수도 있다는 점은 알아두길 바란다.
-u 로 트래픽 수치 표현 방법을 지정할 수 있다. 비트, 킬로비트, 메가 비트등의 옵션이 있다.
F2 키를 누르면 옵션 화면이 나타나서 설정 값등을 볼 수 있으며, 이동키를 통해 움직일 수도 있다.
다운로드는 다음 경로에서 가능하다
http://www.roland-riegel.de/nload/
데비안 계열 사용자는 apg-get install nload 로 쉽게 설치할 수 있다.
2011년 11월 21일 월요일
다수의 IP에 대해 Alive 유/무 쉽게 확인해 보기
패킷분석을 하다보면, 분석목적에 따라 다르겠지만 추출한 IP 주소에 대해서 추가적인 정보를 얻어야 하는 경우가 있다. WHOIS 정보가 될 수도 있고, 해당 IP 에 대한 포트 정보 또는 OS Fingerprint 를 통해 운영체제 추정등 다양한 정보를 얻기위해 시도해 볼 수 있다. 그중 대표적으로 한번쯤은 해보는 것이 해당 IP 에 대한 Alive 유무 체크일 것이다. 보통은 Ping 을 통해 확인을 한다. 그런데 한 두개의 IP 가 아니라 대량으로 테스트 해 보아야 한다면, 간단한 쉘 스크립트를 이용해서 쉽게 확인해보자.
여러 도구들이 있을텐데, 가장 기본적인 도구를 가지고 빠르게 확인하기 위해 테스트 해보았다. (필자도 필요에 의해)
일단, 아래와 같은 IP 주소를 라인별로 가지고 있다고 치자. tshark 등을 통해 IP 를 추출해 내었을 수도 있고, 어떤 방법이든지 확인해 보아야 할 IP 리스트를 라인별로 기록한 것이다.
# more ip.txt
[삭제].130.50
[삭제].10.99
[삭제].25.121
[삭제].56.99
[삭제].209.197
[삭제].85.76
[삭제].217.32
.
.
그리고 ping 에 의한 결과는 아래와 같다.
# ping [삭제].10.99
PING [삭제].10.99 ([삭제].10.99): 56 data bytes
64 bytes from [삭제].10.99: icmp_seq=0 ttl=114 time=13.271 ms
64 bytes from [삭제].10.99: icmp_seq=1 ttl=114 time=13.693 ms
64 bytes from [삭제].10.99: icmp_seq=2 ttl=114 time=13.790 ms
--- [삭제].10.99 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 13.271/13.584/13.790/0.262 ms
이렇게 Ping 에 의해 출력되는 정보를 가지고 간단하게 아래와 같이 구현해 보았다.
#./ip_chk.sh
Checking [삭제].130.50: is dead
Checking [삭제].10.99: is alive
Checking [삭제].25.121: is alive
Checking [삭제].56.99: is alive
Checking [삭제].209.197: is alive
Checking [삭제].85.76: is alive
Checking [삭제].217.32: is dead
Checking [삭제].89.169: is dead
Checking [삭제].77.102: is alive
Checking [삭제].216.69: is dead
Checking [삭제].109.240: is dead
Checking [삭제].65.226: is dead
.
해당 스크립트 내용을 살펴보면 아래와 같다.
ip.txt 에서 IP를 한 개씩 읽어 들이면서 $host 변수에 저장하고, ping 을 이용해 그 결과에 따라 Alive 또는 Dead 를 표시한다. ping -c1 은 한번만 카운트를 한다는 것이고, -w1 은 최대 Max Timeout 을 1초로 지정한 것이다. 즉, 1초 안에 Ping 에 대한 결과를 지정하는 것이다. 이후 출력되는 정보를 콤마(,) 로 구분하고 두번째 내용에 해당하는 1 packets received 가 패턴 매칭되면 Alive 라고 지정하는 것이다. Ping 을 성공하였다면, 1 packets received 가 출력될 것이기 때문이다.
이상, 간단히 기본 명령어를 조합해서 다수의 IP 에 대해 Alive 유무를 체크해 보았다. 방법은 다양하게 있지만, 가급적 기본 도구를 이용하는 것이 분석 입장에서는 편할 수 있다. 분석을 수행할 컴퓨터가 바뀌더라도 어디서든 쉽게 적용해서 사용할 수 있기 때문이다.
간단하게 어떻게 하면 이용할 수 있을까 하고 고민해 보면,
쉽게 문제가 해결되기도 한다.
From Rigel
여러 도구들이 있을텐데, 가장 기본적인 도구를 가지고 빠르게 확인하기 위해 테스트 해보았다. (필자도 필요에 의해)
일단, 아래와 같은 IP 주소를 라인별로 가지고 있다고 치자. tshark 등을 통해 IP 를 추출해 내었을 수도 있고, 어떤 방법이든지 확인해 보아야 할 IP 리스트를 라인별로 기록한 것이다.
# more ip.txt
[삭제].130.50
[삭제].10.99
[삭제].25.121
[삭제].56.99
[삭제].209.197
[삭제].85.76
[삭제].217.32
.
.
그리고 ping 에 의한 결과는 아래와 같다.
# ping [삭제].10.99
PING [삭제].10.99 ([삭제].10.99): 56 data bytes
64 bytes from [삭제].10.99: icmp_seq=0 ttl=114 time=13.271 ms
64 bytes from [삭제].10.99: icmp_seq=1 ttl=114 time=13.693 ms
64 bytes from [삭제].10.99: icmp_seq=2 ttl=114 time=13.790 ms
--- [삭제].10.99 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 13.271/13.584/13.790/0.262 ms
이렇게 Ping 에 의해 출력되는 정보를 가지고 간단하게 아래와 같이 구현해 보았다.
#./ip_chk.sh
Checking [삭제].130.50: is dead
Checking [삭제].10.99: is alive
Checking [삭제].25.121: is alive
Checking [삭제].56.99: is alive
Checking [삭제].209.197: is alive
Checking [삭제].85.76: is alive
Checking [삭제].217.32: is dead
Checking [삭제].89.169: is dead
Checking [삭제].77.102: is alive
Checking [삭제].216.69: is dead
Checking [삭제].109.240: is dead
Checking [삭제].65.226: is dead
.
해당 스크립트 내용을 살펴보면 아래와 같다.
$ more ip_chk.sh
# PacketInside.com
for host in `cat ip.txt`
do
echo -n "Checking $host: "
ping -q -c1 -w1 $host | grep transmitted |
awk -F, '{if ($2 ~ /1 packets received/) print "is alive"; else print "is dead"; }'
done
# PacketInside.com
for host in `cat ip.txt`
do
echo -n "Checking $host: "
ping -q -c1 -w1 $host | grep transmitted |
awk -F, '{if ($2 ~ /1 packets received/) print "is alive"; else print "is dead"; }'
done
ip.txt 에서 IP를 한 개씩 읽어 들이면서 $host 변수에 저장하고, ping 을 이용해 그 결과에 따라 Alive 또는 Dead 를 표시한다. ping -c1 은 한번만 카운트를 한다는 것이고, -w1 은 최대 Max Timeout 을 1초로 지정한 것이다. 즉, 1초 안에 Ping 에 대한 결과를 지정하는 것이다. 이후 출력되는 정보를 콤마(,) 로 구분하고 두번째 내용에 해당하는 1 packets received 가 패턴 매칭되면 Alive 라고 지정하는 것이다. Ping 을 성공하였다면, 1 packets received 가 출력될 것이기 때문이다.
이상, 간단히 기본 명령어를 조합해서 다수의 IP 에 대해 Alive 유무를 체크해 보았다. 방법은 다양하게 있지만, 가급적 기본 도구를 이용하는 것이 분석 입장에서는 편할 수 있다. 분석을 수행할 컴퓨터가 바뀌더라도 어디서든 쉽게 적용해서 사용할 수 있기 때문이다.
간단하게 어떻게 하면 이용할 수 있을까 하고 고민해 보면,
쉽게 문제가 해결되기도 한다.
From Rigel
2011년 8월 4일 목요일
*NIX 명령어 옵션 하나의 큰 차이 그리고 잊고 지냈던 옵션들...
여러분들이 항상 사용하는 명령어들에는, 각자 사용하는 스타일이 분명 하나씩 있다.
그것이 의식적이든 의식적이지 않던, 나도 모르게 오랜 세월동안 자주 사용하는 명령어 스타일 말이다. 예를들어, ls 명령어를 사용한다고 했을때 어떤 사람들은 그냥 ls 를 치기도 하지만, 또 다른 사람은 ls -l 또는 ls -al 등으로 다양하게 있을 것이다.
항상 익숙하게 사용하던 이 명령어 옵션도 알고 보면 시간이 지나면서 새로운 기능들이 추가되거나 또는 이미 있지만 모르고 사용하지 못했던 것들도 있다. 항상 많이 쓰는 명령어 이면서도 사용하던 옵션만 주로 사용하는 경우가 많다. 알고보면 좋은 기능이 숨어 있음에도 불구하고 말이다.
최근에는 가끔 항상 사용하던 명령어라도 한번씩은 man 페이지 또는 --help 옵션으로 무엇이 있는지 살펴본다. 그러다 아, 이런 것들이 있었네 하는 것이 있다. 너무 익숙한 명령어 이다 보니 오히려 모르고 지나치는 것이다. 예를 들어, grep 명령어는 단순히 문자열을 찾기 위해서 사용했는데, 때로는 탐지한 문자열 패턴 위, 아래 영역을 더 보고 싶을때가 있다. 이때는 -A, -B 옵션이 유용하다. -A 는 after, -B 는 before 뜻으로 탐지된 패턴의 앞뒤로 얼마 라인만큼 더 볼지 지정할 수 있는 것이다. 항상 그렇게 많이 사용하는 명령어 이면서 미처 모르고 지나쳤던 것이다.
또, netstat 는 주로 -na, -nr 만 주로 사용했는데, -p 는 해당 소켓을 사용하고 있는 프로세스를 알려준다. 다른 예로, 속도 차이를 가져오는 경우의 Case 도 있다. 한 디렉토리 안에 파일이 약 9만 4천개가 있었다. 여기서 파일 이름중에 FAIL 이라는 것이 있는 것을 찾기 위해 ls 를 사용하였다.
# time ls -1 | grep FAIL | wc -l
1428
real 0m3.337s
user 0m0.980s
sys 0m0.608s
# time ls -l | grep FAIL | wc -l
1428
real 0m39.320s
user 0m2.076s
sys 0m7.472s
위 차이를 보면 3초와 39 초로 차이가 크게 나타난다. 얼핏보면 비슷해 보이는 명령어 옵션인데 말이다. 한개는 숫자 1 을 사용한 것이고 다른 하나는 많이 사용하는 영문 l 을 사용한 것이다. 숫자 1은 파일이름만 출력하지만, 영문 l 은 파일소유주,날짜 등 좀더 많은 정보를 보여준다. 그래서 이렇게 파일이 많이 있는 경우에는 리스트 출력할때 차이가 발생하는 것이다. 사용하는 목적에 따라 다르지만, 조금만 생각해 보면 다른 결과를 가져오는 것이다.
항상 내가 똑같이 사용하던 방식에 너무 익숙해져 있다면, 한번 이런 명령어들을 다시 돌아보는 것도 좋을것 같다. 여러분이 사용하던 쉘 스크립트, 명령어들이 정말 최선의 선택인지. :-)
From Rigel.
그것이 의식적이든 의식적이지 않던, 나도 모르게 오랜 세월동안 자주 사용하는 명령어 스타일 말이다. 예를들어, ls 명령어를 사용한다고 했을때 어떤 사람들은 그냥 ls 를 치기도 하지만, 또 다른 사람은 ls -l 또는 ls -al 등으로 다양하게 있을 것이다.
항상 익숙하게 사용하던 이 명령어 옵션도 알고 보면 시간이 지나면서 새로운 기능들이 추가되거나 또는 이미 있지만 모르고 사용하지 못했던 것들도 있다. 항상 많이 쓰는 명령어 이면서도 사용하던 옵션만 주로 사용하는 경우가 많다. 알고보면 좋은 기능이 숨어 있음에도 불구하고 말이다.
최근에는 가끔 항상 사용하던 명령어라도 한번씩은 man 페이지 또는 --help 옵션으로 무엇이 있는지 살펴본다. 그러다 아, 이런 것들이 있었네 하는 것이 있다. 너무 익숙한 명령어 이다 보니 오히려 모르고 지나치는 것이다. 예를 들어, grep 명령어는 단순히 문자열을 찾기 위해서 사용했는데, 때로는 탐지한 문자열 패턴 위, 아래 영역을 더 보고 싶을때가 있다. 이때는 -A, -B 옵션이 유용하다. -A 는 after, -B 는 before 뜻으로 탐지된 패턴의 앞뒤로 얼마 라인만큼 더 볼지 지정할 수 있는 것이다. 항상 그렇게 많이 사용하는 명령어 이면서 미처 모르고 지나쳤던 것이다.
또, netstat 는 주로 -na, -nr 만 주로 사용했는데, -p 는 해당 소켓을 사용하고 있는 프로세스를 알려준다. 다른 예로, 속도 차이를 가져오는 경우의 Case 도 있다. 한 디렉토리 안에 파일이 약 9만 4천개가 있었다. 여기서 파일 이름중에 FAIL 이라는 것이 있는 것을 찾기 위해 ls 를 사용하였다.
# time ls -1 | grep FAIL | wc -l
1428
real 0m3.337s
user 0m0.980s
sys 0m0.608s
# time ls -l | grep FAIL | wc -l
1428
real 0m39.320s
user 0m2.076s
sys 0m7.472s
위 차이를 보면 3초와 39 초로 차이가 크게 나타난다. 얼핏보면 비슷해 보이는 명령어 옵션인데 말이다. 한개는 숫자 1 을 사용한 것이고 다른 하나는 많이 사용하는 영문 l 을 사용한 것이다. 숫자 1은 파일이름만 출력하지만, 영문 l 은 파일소유주,날짜 등 좀더 많은 정보를 보여준다. 그래서 이렇게 파일이 많이 있는 경우에는 리스트 출력할때 차이가 발생하는 것이다. 사용하는 목적에 따라 다르지만, 조금만 생각해 보면 다른 결과를 가져오는 것이다.
항상 내가 똑같이 사용하던 방식에 너무 익숙해져 있다면, 한번 이런 명령어들을 다시 돌아보는 것도 좋을것 같다. 여러분이 사용하던 쉘 스크립트, 명령어들이 정말 최선의 선택인지. :-)
From Rigel.
2011년 6월 8일 수요일
*NIX 에서 서브넷(Subnet) 계산을 쉽게 해 보자!
초기 네트워크 설정 과정중에 서브넷을 계산해 넣는경우가 있다. 네트워크 서브넷을 계산하는 가장 쉬운 방법은
- 인터넷에서 바로 제공하는 온라인 서브넷 계산기
- 윈도우용 서브넷 계산기 프로그램 등이 있다.
자주 계산이 필요한 경우라면 윈도우용과 같은 프로그램이 설치되어 있으면 편리하다. 이런 서브넷 계산기는 인터넷에서 조금만 검색해보면 너무나 많은 도구들이 있기 때문에 따로 언급은 안하겠다. 나의 경우는 가끔씩 필요한 경우라, 인터넷상의 온라인 계산기를 주로 이용했는데, 리눅스 상에서 계산해볼 생각은 하지 않았다. 그러나, 콘솔 기반으로 간단하면서도 쉽고 빠르게 계산할 수 있는 도구들이 있다.
여기서는 subnetcalc 라는 것을 이용하였는데, 다음의 경로에서 파일을 받을 수 있다.
http://www.iem.uni-due.de/~dreibh/subnetcalc
또는 apt-get install subnetcalc 로 쉽게 설치도 가능하다. 사용법도 간단해서 아래 화면과 같이 계산할 네트워크 주소와 넷 마스크 또는 Prefix 값을 넣어주면 된다.
- 인터넷에서 바로 제공하는 온라인 서브넷 계산기
- 윈도우용 서브넷 계산기 프로그램 등이 있다.
자주 계산이 필요한 경우라면 윈도우용과 같은 프로그램이 설치되어 있으면 편리하다. 이런 서브넷 계산기는 인터넷에서 조금만 검색해보면 너무나 많은 도구들이 있기 때문에 따로 언급은 안하겠다. 나의 경우는 가끔씩 필요한 경우라, 인터넷상의 온라인 계산기를 주로 이용했는데, 리눅스 상에서 계산해볼 생각은 하지 않았다. 그러나, 콘솔 기반으로 간단하면서도 쉽고 빠르게 계산할 수 있는 도구들이 있다.
여기서는 subnetcalc 라는 것을 이용하였는데, 다음의 경로에서 파일을 받을 수 있다.
http://www.iem.uni-due.de/~dreibh/subnetcalc
또는 apt-get install subnetcalc 로 쉽게 설치도 가능하다. 사용법도 간단해서 아래 화면과 같이 계산할 네트워크 주소와 넷 마스크 또는 Prefix 값을 넣어주면 된다.
그러면 사용가능한 호스트 갯수부터 하여 필요한 정보를 나열해 준다. 리눅스를 주로 사용하면서 서브넷 계산이 많은 분들한테는 유용하게 사용될 수 있을 것이다. MAN 페이지에 있는 몇 가지 예제를 써 보면 아래와 같다:
subnetcalc 132.252.250.0 255.255.255.0
subnetcalc 132.252.250.0/255.255.255.0
subnetcalc 132.252.250.0 24
subnetcalc 132.252.250.0/24
subnetcalc fec0:2345:6789:1111:221:6aff:fe0b:2674 56
subnetcalc 2a00:1450:8007::69 64
subnetcalc ff08::1:2:3
subnetcalc 131.220.6.5/24
subnetcalc 132.252.250.0/255.255.255.0
subnetcalc 132.252.250.0 24
subnetcalc 132.252.250.0/24
subnetcalc fec0:2345:6789:1111:221:6aff:fe0b:2674 56
subnetcalc 2a00:1450:8007::69 64
subnetcalc ff08::1:2:3
subnetcalc 131.220.6.5/24
라벨:
*NIX,
*NIX Geek,
리눅스,
서브넷,
subnetcalc
2011년 5월 23일 월요일
*NIX 시스템에서 파일 삭제가 안되는 경우 이런 방법을 사용해보자
*NIX 시스템에서 삭제할 파일이 너무 많은 경우 실패를 한다. 예를 들어, rm -rf * 로 파일을 지운다고 하였을때 다음과 같은 메시지를 받는 경우가 있다:
bash: /bin/rm: Argument list too long
이런 경우는 정말 삭제할 파일이 너무나 많은 경우로, 인자로 해당 리스트가 다 넘어가지 못했기 때문이다. 이럴때 find 를 이용해 보자. *.log 라는 파일을 다 삭제하는 경우 현 디렉토리에서 *.log 를 찾아서 xargs 로 Input 을 받아 rm 명령어로 삭제하는 것이다.
이러면 일단 삭제는 할 수 있다. 또, 파일이름이 이상해서 삭제가 안되는 경우도 있다. 그러면 inode 번호를 이용해 삭제하면 된다. ls 명령어에서 -i 옵션은 inode 번호를 보여준다. 그러면 find 의 -inum 옵션을 이용해서 아래와 같은 형태로 삭제할 수 있다.
시스템 운영에 참고하길 바란다.
bash: /bin/rm: Argument list too long
이런 경우는 정말 삭제할 파일이 너무나 많은 경우로, 인자로 해당 리스트가 다 넘어가지 못했기 때문이다. 이럴때 find 를 이용해 보자. *.log 라는 파일을 다 삭제하는 경우 현 디렉토리에서 *.log 를 찾아서 xargs 로 Input 을 받아 rm 명령어로 삭제하는 것이다.
find . -name '*.log' | xargs rm
이러면 일단 삭제는 할 수 있다. 또, 파일이름이 이상해서 삭제가 안되는 경우도 있다. 그러면 inode 번호를 이용해 삭제하면 된다. ls 명령어에서 -i 옵션은 inode 번호를 보여준다. 그러면 find 의 -inum 옵션을 이용해서 아래와 같은 형태로 삭제할 수 있다.
$ ls -l
total 0
-rw-r--r-- 1 rigel rigel 0 May 19 23:33 test.txt
$ ls -li
total 0
38207514 -rw-r--r-- 1 rigel rigel 0 May 19 23:33 test.txt
$ find . -inum 38207514 -exec rm {} \;
$ ls -l
total 0
$
total 0
-rw-r--r-- 1 rigel rigel 0 May 19 23:33 test.txt
$ ls -li
total 0
38207514 -rw-r--r-- 1 rigel rigel 0 May 19 23:33 test.txt
$ find . -inum 38207514 -exec rm {} \;
$ ls -l
total 0
$
시스템 운영에 참고하길 바란다.
2010년 8월 18일 수요일
2년여만에 새롭게 나온 Vim 7.3 버전

이미지출처 : www.cs.drexel.edu
유닉스 환경에서 많이 사용되는 에디터 프로그램인 VI. 윈도우용으로도 나와 있어 많이 사용되는 에디터이다. 유닉스 시스템을 사용한다면 VI 는 기본적으로 사용할 것이다.
이중에서도 Vim (Vi IMproved) 이 많이 사용되는데 7.2 버전이 나온 후,
2년 여 만에 7.3 버전이 나왔다. 많은 버그들이 픽스 되었고, 주요한 변화는 아래와 같다:
- Persistent undo and undo for reload
- Blowfish encryption, encryption of the swap file
- Conceal text
- Lua interface
- Python 3 interface
스왑파일도 암호화가 되고, Lua 와 파이썬 3 인터페이스가 지원된다. VI 는 아주 많이 사용하고
있는데, 사실 파이썬, 펄, 루비와 같은 인터페이스가 지원되는 줄은 몰랐다. 이번 업데이트
사항을 보고 이래저래 다시 살펴보니 내가 알고 있는 것 이상으로 더욱 많은 기능이 있었다.
그래도 남들 이상으로 다양한 기능을 많이 사용한다고도 생각했지만, 역시나 전체의 일부분만
사용하고 있던 셈이었다. 일반적으로 사용되는 프로그램의 기능중 주요 기능만 일부 사용되는 경우가 많은데
그 프로그램을 제대로 알고 있다면 사용할 수 있는 기능의 범위는 아주 넓어질 것이다.
일단 최신버전의 다운로드는 다음의 경로에서 할 수 있다.
http://www.vim.org/
그리고 오른쪽 메뉴에 *NiX Geek 라는 새로운 메뉴를 만들었다. 이곳에는 리눅스/유닉스 시스템과 관련한
팁 및 유용한 도구 등 다양한 것을 소개해 보고자 한다.
앞으로 이것저것 할것이 많으니 큰일이긴 하다 ^^
피드 구독하기:
글 (Atom)





