2014-08-31 4 views
0

Я хочу загрузить в различные файлы конфигурации, изменить некоторые настройки и записать их обратно. После поиска, похоже, что полезен модуль iscpy. Проблема в том, что я не могу понять, как ее использовать, и я не могу найти какие-либо примеры в Интернете. Кто-нибудь использовал его, и если да, то можете ли вы дать мне несколько образцов, пожалуйста?Использование модуля python iscpy

+0

Почему косяк народных кишка тонка сказать, почему они downvote/запрос, он закрыт? – spiderplant0

+0

Я буду поддерживать баланс! Звучит как интересный модуль, но его плохо документировано, и я тоже не могу найти много информации. Я думаю, что это законный вопрос для SO. – tdelaney

+0

Спасибо @tdelaney. К закрывающей полиции: закрытие отмечено как «вне темы». Но в руководящих принципах, насколько я вижу, он затрагивает конкретную проблему программирования (в частности, как использовать «iscpy»), и она подотчетна, и это не приведет к «упрямым ответам». Но, прежде всего, некоторый краткий пример использования будет полезен многим программистам. – spiderplant0

ответ

2

Вот это программа, которая считывает файл конфигурации ISC-стиля, изменяет конфигурацию, и записывает новый конфигурационный файл:

import iscpy 

# Read in an existing config file 
with open('/tmp/named.conf') as input_config_file: 
    config_string = input_config_file.read() 
config_dict = iscpy.ParseISCString(config_string) 

# Modify the configuration 
config_dict['zone "example.com"'] = { 
    'file':'"zone/example.com"', 
    'type':'master' 
} 

# Write out the new config 
config_string = iscpy.MakeISC(config_dict) 
with open('/tmp/named-new.conf', 'w') as output_config_file: 
    output_config_file.write(config_string) 

Заметьте, что это преобразование делает не сохранить какие-либо комментарии или пробелы, что может были в оригинале. вход

Пример:

// Boot file for LAND-5 name server 

options { 
     directory "/var/named"; 
}; 

controls { 
     inet 127.0.0.1 allow { localhost; } keys { rndc_key; }; 
}; 

key "rndc_key" { 
     algorithm hmac-md5; 
     secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; 
}; 

zone "." { 
     type hint; 
     file "root.hints"; 
}; 

zone "0.0.127.in-addr.arpa" { 
     type master; 
     file "zone/127.0.0"; 
}; 

zone "land-5.com" { 
     type master; 
     file "zone/land-5.com"; 
}; 

zone "177.6.206.in-addr.arpa" { 
     type master; 
     file "zone/206.6.177"; 
}; 

Пример вывода:

zone "177.6.206.in-addr.arpa" { type master; 
file "zone/206.6.177"; }; 
key "rndc_key" { secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; 
algorithm hmac-md5; }; 
controls { inet 127.0.0.1 allow { localhost; } keys { rndc_key; }; }; 
zone "example.com" { type master; 
file "zone/example.com"; }; 
zone "." { type hint; 
file "root.hints"; }; 
zone "0.0.127.in-addr.arpa" { type master; 
file "zone/127.0.0"; }; 
zone "land-5.com" { type master; 
file "zone/land-5.com"; }; 
options { directory "/var/named"; }; 
Смежные вопросы