내가 가지고 있다고 가정 해 봅시다설치되지 않음/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
파일 내용의 시스템 버퍼에 변경 사항이 통보되지 않으므로 스크립트를 실행하고 완료되면 장치를 다시 마운트해야 합니다 .