PerlでKerberos 5構成ファイルを編集するにはどうすればよいですか?
-
03-07-2019 - |
質問
ケルベロス構成ファイルを解析(および書き込み)する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を少し複雑にするだけです。ハッシュのハッシュの代わりに、ハッシュのハッシュのハッシュが必要になります。最初のレベルのキーは[...]のキーワードで、2番目のレベルはここで書いたものです(for&quot; pam = {&quot; )。
;
foreach (keys %{$conf{$section}}) {
print "$section:パーサーの作成に約10分かかる場合、おそらくモジュールにするのはそれほど面白くないでしょう。おそらく仕事をするコードの一部です(免責事項:Kerberosの設定形式については何も知りません。コードはここに投稿した内容に基づいています)。
<*>
編集:ini形式の解析も難しくありません。 whileループにさらにifを追加し、データ構造%confを少し複雑にするだけです。ハッシュのハッシュの代わりに、ハッシュのハッシュのハッシュが必要になります。最初のレベルのキーは[...]のキーワードで、2番目のレベルはここで書いたものです(for&quot; pam = {&quot; )。
:$conf{$section}{パーサーの作成に約10分かかる場合、おそらくモジュールにするのはそれほど面白くないでしょう。おそらく仕事をするコードの一部です(免責事項:Kerberosの設定形式については何も知りません。コードはここに投稿した内容に基づいています)。
<*>
編集:ini形式の解析も難しくありません。 whileループにさらにifを追加し、データ構造%confを少し複雑にするだけです。ハッシュのハッシュの代わりに、ハッシュのハッシュのハッシュが必要になります。最初のレベルのキーは[...]のキーワードで、2番目のレベルはここで書いたものです(for&quot; pam = {&quot; )。
}\n";
}
}
編集:ini形式の解析も難しくありません。 whileループにさらにifを追加し、データ構造%confを少し複雑にするだけです。ハッシュのハッシュの代わりに、ハッシュのハッシュのハッシュが必要になります。最初のレベルのキーは[...]のキーワードで、2番目のレベルはここで書いたものです(for&quot; pam = {&quot; )。