본문 바로가기
728x90
반응형

Programming139

Python : 10MB 이상의 파일중에서 중복된 파일 찾기 PHP, Ruby 에 이어서, Python 에서도 중복파일 찾기를 만들어보았다. # -*- coding: cp949 -*- # 버전 3.2.2 이상 from operator import itemgetter from hashlib import md5 import os TARGET_DIR = "M:\\PATH\\TO\\특정디렉토리" LIMITED_SIZE = 10*(1024*1024) # 10MB def md5sum(filename, buf_size=4068): m = md5() with open(filename, 'rb') as f: data = f.read(buf_size) while data: m.update(data) data = f.read(buf_size) return m.hexdigest() d.. 2011. 7. 12.
perl 스크립트를 통한 해킹 사고 올해 들어서 벌써 2번째 해킹사고가 발생하였다. 한번은 exim 이라는 SMTP를 통해서, 그리고, 어제는 apache+php 를 통해서 이루어졌다. 각기 다른 서비스를 통해서 당했지만, 해킹 형태는 비슷하였다. 해당 서비스의 취약점을 통해서 /tmp 디렉토리에 perl 스크립트를 심고, 데몬으로 돌려서 특정 사이트에 과다 트래픽을 발생시켜서 마비시키는 것이었다. 이를 해결하는 방법으로는 아래 소개한 여러 복잡한 방법이 있지만, 공통점은 perl 을 이용한다는 것이므로, 가장 간단한 방법은 perl을 삭제하여 없애버리는 것이다. ^^; Simple is Best ??? http://blog.naver.com/PostView.nhn?blogId=nicegass&logNo=130033355546&redire.. 2011. 6. 23.
(Perl) perlbrew 를 이용하여 다양한 버전의 Perl을 설치해보자! CentOS 5.6 에 기본으로 설치되어 있는 Perl 의 버전은 5.8.8 이다. 버전이 낮아도 한참 낮다. 요즘 다른 OS에는 5.10을 기본으로 사용하도록 되어 있으며, 최신 버전은 5.12 이다. 거기에 벌써 5.14 RC 버전까지 나온 상태이다. 이런 구닥다리 버전을 벗어나서 그나마 남들도 쓰는 버전을 쓰려면, 별도로 Perl 을 설치해야 되는데... 직접 소스 파일을 다운로드하여 컴파일/설치 하는 것도 방법이겠지만... 더욱 유연하고 확장성 있는 방법을 소개하고자 한다. 지난번 pythonbrew 를 이용해서 여러 버전의 python 을 설치하는 법을 알려드렸는데, 이것의 원조인 perlbrew 를 이용하면 우리가 원하는 것을 할 수 있다.먼저 perlbrew를 설치한다.$ curl -Lk h.. 2011. 5. 23.
(Ruby) 10MB 이상의 파일중에서 중복된 파일 찾기 아래 코드에서 파일에 대한 MD5SUM 을 구하기 위해서 주석 처리한 부분을 대신 사용할 수 도 있다. 인터넷에서 찾아보면 이렇게 되어 있는 경우가 많은데, 이렇게 하면 메모리를 많이 잡아먹는 문제가 발생한다. 반드시 Digest::MD5.file().hexdigest 를 이용해야만 적은 메모리를 사용하면서 원활하게 동작되니 주의하기 바란다.# -*- coding: cp949 -*-require 'find'require 'digest/md5' file_list = Array.newFind.find("C:\\") do |path| if File.file?(path) and File.size(path) > 10_000_000 # digest = Digest::MD5.hexdigest(File.read.. 2011. 5. 17.
(PHP) 빈 디렉토리 삭제하기 파일서비스를 하다 보면, 불필요하게 비어 있는 디렉토리들이 우후죽순으로 생겨난다. 용량은 얼마 차지하지 않겠지만, 관리상 지저분한 면이 있으니, 깔끔한(?) 성격을 가진 관리자라면 이것 조차도 지우고 싶을 것이다. Windows 에서는 빈 디렉토리를 지울 수 있는 유틸리티를 이용해서 지워도 되고, Unix 계열이라면 find 를 이용해서 지울 수 있다.다음 PHP 코드를 이용하면, 모든 OS에서 동일하게 빈 디렉토리를 삭제할 수 있다. 같은 일을 하는 코드를 찾아봤지만, 없어서 직접 구현해보았다. 간단하다, 모든 디렉토리를 순회하면서 해당 디렉토리 내에 파일/디렉토리가 있는지 검사해서 아무 것도 없으면, 삭제 대상으로 등록하고, 나중에 한방에 지우도록 한 것이다.// --------------------.. 2011. 5. 14.
(PHP) 윈도우 폴더 크기 구하기 PHP에서 윈도우에서 폴더 크기를 구하려면 아래와 같이 한다. 첫번째 방법은 인터넷에서 찾은 방법인데, 테스트해보니 결과값이 나오지 않았다. 그래서, 어쩔수 없이 하위 폴더를 모두 찾아가면서 파일크기를 모두 더해서 폴더의 전체용량을 구하는 것을 새로 만들었다. 전부다 뒤지기 때문에 시간이 좀 걸린다. 대신 윈도우 뿐만 아니라 다른 OS(Linux, BSD 등)에서도 동작한다는 장점이 있긴 하다. ^^윈도우 폴더 크기 구하기function Get_DirByteSize($Dir_Path) { $objFs = new COM("Scripting.FileSystemObject"); $objFolder = $objFs->GetFolder($Dir_Path); return $objFolder->.. 2011. 5. 10.
728x90
반응형