كيف يمكنني تعديل كيربيروس الملفات 5 التكوين مع بيرل؟
-
03-07-2019 - |
سؤال
وقد أي شخص يأتي عبر وحدة بيرل التي من شأنها أن تحليل (والكتابة) ملفات التكوين كيربيروس (أي /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";
}
}
وتحرير: تحليل شكل رسائل كتبها هذا المؤلف ليس من الصعب أيضا. سوف تحتاج فقط إلى إضافة قليل من أكثر إذا في حلقة من الوقت، وجعل٪ أسيوط بنية بيانات قليلا أكثر تعقيدا. بدلا من تجزئة التجزئة، وسوف تحتاج إلى تجزئة تجزئة التجزئة، حيث المفتاح المستوى الأول هو الكلمة في [...]، والمستوى الثاني هو ما كتبته هنا (ل "حزب الأصالة والمعاصرة = {").