كيف يمكنني تعديل كيربيروس الملفات 5 التكوين مع بيرل؟

StackOverflow https://stackoverflow.com/questions/418859

سؤال

وقد أي شخص يأتي عبر وحدة بيرل التي من شأنها أن تحليل (والكتابة) ملفات التكوين كيربيروس (أي /etc/krb5.conf)؟ لقد بحثت في عدد غير قليل من وحدات التوزيع مثل التكوين :: عامة، <أ href ل يبدو = "http://search.cpan.org/dist/Config-Auto" يختلط = "نوفولو noreferrer"> التكوين :: السيارات ، وما إلى ذلك، ولكن لا شيء لتكون قادرة على التعامل مع الهياكل المتداخلة كما يلي :

pam = {
  debug = false
  ticket_lifetime = 36000
  renew_lifetime = 36000
  forwardable = true
  krb4_convert = false
}

وويحتاج أيضا إلى التعامل مع المقاطع على غرار INI، على سبيل المثال:

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM

[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }

ومزيد من التفاصيل حول شكل ويمكن الاطلاع على الوثائق krb5 أسيوط

وأنا في هذه النقطة كتابة محلل بلدي، ولكن أنا أفضل أن يكن لديك لتفعل ذلك لو كان شخص آخر قد كتب لطيفة، وحدة أنيقة بالفعل.

هل كانت مفيدة؟

المحلول

وأعتقد إذا كان يستغرق حوالي 10 دقيقة لكتابة محلل، وربما هو ليس مثيرة للاهتمام للغاية لجعلها وحدة نمطية. وهنا قطعة من التعليمات البرمجية التي ربما لا وظيفة (تنويه: لا أعرف شيئا عن شكل التكوين ل Kerberos، يستند رمز على ما قمت بنشرها هنا).

#!/usr/bin/perl -w
use strict;

my %conf;
my $section;

while (<>) {
    if (/^\s*(\S*)\s*=\s*\{\s*$/) {
        $section = $1;
        $conf{$section} = {};
    } elsif (/^\s*(\S*)\s*=\s*(\S*)\s*$/) {
        my $key = $1;
        my $value = $2;
        if ($section) {
            $conf{$section}{$key}=$value;
        }
    }
}

foreach (keys %conf) {
    $section = $_;
    foreach (keys %{$conf{$section}}) {
        print "$section:$_:$conf{$section}{$_}\n";
    }
}

وتحرير: تحليل شكل رسائل كتبها هذا المؤلف ليس من الصعب أيضا. سوف تحتاج فقط إلى إضافة قليل من أكثر إذا في حلقة من الوقت، وجعل٪ أسيوط بنية بيانات قليلا أكثر تعقيدا. بدلا من تجزئة التجزئة، وسوف تحتاج إلى تجزئة تجزئة التجزئة، حيث المفتاح المستوى الأول هو الكلمة في [...]، والمستوى الثاني هو ما كتبته هنا (ل "حزب الأصالة والمعاصرة = {").

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top