如何使用Perl编辑Kerberos 5配置文件?
-
03-07-2019 - |
题
有没有人遇到过将解析(并写入)kerberos配置文件的Perl模块(即 /etc/krb5.conf
)?我查看了很多解析模块,如 Config :: General , Config :: Auto 等,但似乎没有人能够处理如下的嵌套结构:
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 conf文档
我正在编写自己的解析器,但如果其他人已经编写了一个漂亮,优雅的模块,我宁愿不必这样做。
解决方案
我想如果编写解析器大约需要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 = 我想如果编写解析器大约需要10分钟,那么将它作为模块可能并不那么有趣。这是一段可能完成这项工作的代码(免责声明:我对Kerberos的配置格式一无所知,代码基于您在此处发布的内容)。
<*>
编辑:解析ini格式也不困难。你只需要在while循环中添加一些if,并使数据结构%conf稍微复杂一点。不需要散列哈希,你需要散列散列哈希,其中第一级键是[...]中的关键词,第二级是我在这里写的(对于“pam = {&quot; )。
;
foreach (keys %{$conf{$section}}) {
print "$section:我想如果编写解析器大约需要10分钟,那么将它作为模块可能并不那么有趣。这是一段可能完成这项工作的代码(免责声明:我对Kerberos的配置格式一无所知,代码基于您在此处发布的内容)。
<*>
编辑:解析ini格式也不困难。你只需要在while循环中添加一些if,并使数据结构%conf稍微复杂一点。不需要散列哈希,你需要散列散列哈希,其中第一级键是[...]中的关键词,第二级是我在这里写的(对于“pam = {&quot; )。
:$conf{$section}{我想如果编写解析器大约需要10分钟,那么将它作为模块可能并不那么有趣。这是一段可能完成这项工作的代码(免责声明:我对Kerberos的配置格式一无所知,代码基于您在此处发布的内容)。
<*>
编辑:解析ini格式也不困难。你只需要在while循环中添加一些if,并使数据结构%conf稍微复杂一点。不需要散列哈希,你需要散列散列哈希,其中第一级键是[...]中的关键词,第二级是我在这里写的(对于“pam = {&quot; )。
}\n";
}
}
编辑:解析ini格式也不困难。你只需要在while循环中添加一些if,并使数据结构%conf稍微复杂一点。不需要散列哈希,你需要散列散列哈希,其中第一级键是[...]中的关键词,第二级是我在这里写的(对于“pam = {&quot; )。