2008-10-25 41 views

Trả lời

5

tôi đã không thể sử dụng bicop cho các tập tin khu vực cổ điển như thế này:

$TTL 86400 
@ IN SOA ns1.first-ns.de. postmaster.robot.first-ns.de. (
    2006040800 ; serial 
    14400  ; refresh 
    1800   ; retry 
    604800  ; expire 
    86400)  ; minimum 

@ 

        IN NS  ns1.first-ns.de. 

tôi sẽ có một cái nhìn tại dnspython

+2

Bind sử dụng hai định dạng tệp cấu hình khác nhau - một cho cấu hình máy chủ của nó (ví dụ: /etc/named.conf) và một cho các tệp vùng (ví dụ: /var/named/localhost.zone). Các công cụ này giải quyết các tệp cấu hình, trong khi bạn đang nói về các tệp vùng. – tylerl

0

Xem câu trả lời ở trên về máy bay trực thăng.

Ngoài ra, chỉ mục gói Python tại http://pypi.python.org/pypi là một nơi tuyệt vời để tìm các gói Python.

EDIT: Dưới đây vẫn có thể hữu ích cho người nào đó cố gắng tìm ra phân tích cú pháp đơn giản, nhưng bicop dường như là giải pháp hiện tại.

Nếu ai đó đã sửa đổi cấu hình bằng tay và bạn không muốn ghi đè lên cấu hình, điều đó có nghĩa là bạn muốn chèn/xóa các dòng khỏi cấu hình hiện có, để nguyên tất cả các nhận xét vv? Điều đó ngăn chặn phân tích cú pháp sau đó xuất lại cấu hình, nhưng đó cũng là một tích cực - bạn không cần phải phân tích cú pháp hoàn toàn tệp để hoàn thành mục tiêu của mình.

Để thêm một kỷ lục, bạn có thể thử một cách tiếp cận đơn giản như

# define zone_you_care_about and line_you_wish_to_insert first, then: 
for line in bindfile.read(): 
    out.write(line + '\n') 
    if ('zone "%s" in' % zone_you_care_about) in line: 
     out.write(line_you_wish_to_insert) 

đang tương tự làm việc để loại bỏ một dòng:

# define zone_you_care_about and relevant_text_to_remove, then: 
for line in bindfile.read(): 
    if not relevant_text_to_remove in line: 
     out.write(line + '\n') 

Bạn có thể có được như xa như bạn cần với đoạn đơn giản mã như thế này

+0

Xem câu trả lời của tôi bên dưới về máy bay trực thăng. Có lẽ bạn nên sử dụng google (đó là lần truy cập thứ hai cho "bind config file in python") thay vì giao diện tìm kiếm thiếu hụt của pypi :). – Glyph

+0

Tôi đã google nó và quản lý để bỏ lỡ nó dù sao. Tôi nghĩ rằng tôi đã thử "bind python parse". Tôi sẽ cập nhật phản hồi của tôi. –

0

Bạn có thể thử bicop, "thư viện python để xử lý tệp cấu hình kiểu liên kết ISC".

+0

Điều này có hỗ trợ yêu cầu của daniels rằng việc sửa đổi bằng tay không? –

+2

Từ những gì tôi có thể nói 'bicop' không hỗ trợ phân tích các tệp vùng, chỉ cần tệp cấu hình BIND. Câu hỏi đặt ra các tệp vùng cụ thể. –

+0

Sam Harris là chính xác. Tệp cấu hình Bind không giống với tệp vùng DNS. Vui lòng xóa câu trả lời này vì nó gây hiểu lầm và không có chủ đề. – Cerin

1

Tôi biết điều này là cũ nhưng chỉ làm việc một mình có thể tìm thấy được gọi là iscpy. Bạn có thể làm một easy_install.

easy_install iscpy 

Sau đó, trong python:

import iscpy 
iscpy.ParseISCString(open('somefile.conf', 'r').read()) 

nào trả về một từ điển.

+2

Từ những gì tôi có thể nói 'iscpy' không hỗ trợ phân tích cú pháp các tệp vùng, chỉ các tệp cấu hình BIND. Câu hỏi đặt ra các tệp vùng cụ thể. –

6

easyzone là một lớp tốt đẹp hơn dnspython

Zoner cung cấp một giao diện web cho các tập tin khu vực chỉnh sửa và tận dụng easyzone.

Các vấn đề liên quan