2014-01-22 2 views
4

/proc/net/xt_recent/PORTSCAN의 내용을 실시간으로 표시하는 간단한 스크립트를 작성해야합니다. 이 파일은 끊임없이 변하기 때문에 무한 루프에서이 파일을 읽고 가능한 한 정확하게 "순간"상태를 표시하려고합니다. 내 파일의 샘플 내용은 다음과 같습니다python : 변경중인 파일 읽기

src=123.45.67.89 ttl: 64 last_seen: 4298265432 oldest_pkt: 1 4298265432 
src=132.45.67.89 ttl: 64 last_seen: 4298265432 oldest_pkt: 1 4298265432 
src=231.45.67.89 ttl: 64 last_seen: 4298265432 oldest_pkt: 1 4298265432 

내가

line = f.readline() 

표준

를 사용하거나이 파일을 읽을 수있는 더 좋은 방법이있다. 내 관심은 변화하는 파일을 읽는 동안 가능한 불일치를 피하는 것입니다. (라인이 추가, 제거되는 등)

+0

문제가 매우 유사하기 때문에 http://stackoverflow.com/questions/12523044/how-can-i-tail-a-log-file-in-python을 읽어 보시기 바랍니다. – frans

+0

원하십니까? 그 선들로 무언가를하십시오, 아니면 단지 그것들을 보여주고 싶습니까? 무슨 일있어? – RickyA

+0

예, 선을 처리해야합니다. 내 OS는 관련성이있는 경우 데비안입니다. –

답변

1

파이썬에 대한 좋은 점은 "당신과 같은 문제가있는 사람들" . 보다 일반적인 "쉘"래퍼 솔루션 https://pypi.python.org/pypi/watchdog/0.7.0

, 참조 : https://pypi.python.org/pypi/plumbum 를 후자는 당신이 from plumbum.cmd import tail을 수행 할 수 있습니다 그리고 당신의 루프 내에서 tail['/proc/net/xt_recent/PORTSCAN', '-1']을 실행 참조 파일을 "보고"및 변경에 작용 들어

당신이 껍질에있는 것처럼.

2

David Beazley는 Generator Tricks for Systems Programmers에 대한 훌륭한 토론을 가졌습니다.

특히 처리 무한 데이터 섹션을 확인하십시오. 그의 코드를 사용하여 Unix에서 tail -f과 같은 실시간 파일을 추적 할 수 있습니다.