gpt4 book ai didi

perl - 如何使用 Perl 编辑 Kerberos 5 配置文件?

转载 作者:行者123 更新时间:2023-12-01 03:01:36 26 4
gpt4 key购买 nike

有没有人遇到过会解析(和编写)kerberos 配置文件(即 /etc/krb5.conf)的 Perl 模块?我看过很多解析模块,比如 Config::General , Config::Auto等,但似乎没有一个能够处理如下嵌套结构:

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

还需要处理 INI -style 部分,例如:
[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
}

有关格式的更多详细信息,请访问 the krb5 conf documentation

我正在编写自己的解析器,但如果其他人已经编写了一个漂亮、优雅的模块,我宁愿不必这样做。

最佳答案

我想如果写一个解析器需要大约 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";
}
}

编辑:解析ini格式也不难。您只需要在 while 循环中添加更多 if,并使数据结构 %conf 稍微复杂一些。您将需要哈希的哈希而不是哈希的哈希,其中第一级键是 [...] 中的关键字,第二级是我在这里写的(对于“pam = {”)。

关于perl - 如何使用 Perl 编辑 Kerberos 5 配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/418859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com