블록 장치에서 찾기/바꾸시겠습니까?

블록 장치에서 찾기/바꾸시겠습니까?

내가 가지고 있다고 가정 해 봅시다설치되지 않음/dev/sda로 교체하려는 블록 장치 의 모든 MyPassWord인스턴스입니다 XXXXXXXXXX. (내 목표가 분명하길 바랍니다.)

이를 수행하는 가장 쉬운 방법은 무엇입니까?

답변1

다음을 수행할 수 있습니다.

#! /usr/bin/env python

device = '/dev/sdi'
old_pattern = "MyPassWord"
new_pattern = "XXXXXXXXXX"

assert len (old_pattern) == len(new_pattern)

BS = 1024 ** 2  # 1 Mb buffer
# read a few bytes more to account for occurences of the pattern on the edge
READSIZE = BS + len(old_pattern)

offset = 0
with open(device, 'r+b') as fp:
    assert isinstance(fp, file)
    while True:
        try:
            fp.seek(offset)
        except IOError:
            #print 'offset', offset
            #raise
            break
        buf = fp.read(READSIZE)
        occurences = buf.count(old_pattern)
        if occurences:
            print offset, occurences
            fp.seek(offset)
            fp.write(buf.replace(old_pattern, new_pattern))
            fp.flush()
        offset += BS

상단에서 적절한 장치 이름을 바꾸십시오.

root파일 내용의 시스템 버퍼에 변경 사항이 통보되지 않으므로 스크립트를 실행하고 완료되면 장치를 다시 마운트해야 합니다 .

관련 정보