まず、次の投稿で用語が間違っている場合は、申し訳ありませんが、これはまだ私にとって非常に新しいことです。
背景として、アーカイブされたネットワーク構成で特定の設定セットをチェックするスクリプトがあります。そのため、スクリプトはいくつかのチェックを実行し、そのチェックの結果を配列に追加します。
たとえば、syslogが構成されていることを確認するチェックが@internalsyslogerrorというアレイに追加されます
すべてのチェックが実行された後、すべてのチェックの配列がハッシュに追加されます。キーはデバイス名です。
すべてのコードが厳密に使用されていることに注意してください。警告を使用してください
次のコマンドで;
$results{$configs} = [@internalsyslogerror, @bordersyslogerror,
@borderntperror, @borderntperror, @internalntperror,
@bordertacacserror, @internaltacacserror, @enablepasswordchecks,
@internalsnmpkeyserror, @timezoneerror, @configregistererror,
@bannererror, @bootregistererror, @domainnameerror];
私が抱えている問題は、この情報を抽出する最も洗練された方法です。スクリプトに新しいチェックを追加するために必要な変更の量を減らしたいと思います。現在、上記のコードに追加の配列を追加してから、それを処理するサブに間接参照部分を追加する必要があります。
これが現在、参照を解除して配列に出力し、それを電子メールで送信するために行うことです。
foreach my $k (keys %results) {
push @results, "<b>$k</b><br>";
if (defined $results{$k}[0] ){
push @results, "$results{$k}[0]";
}
if (defined $results{$k}[1] ){
push @results, "$results{$k}[1]";
}
if (defined $results{$k}[2] ){
push @results, "$results{$k}[2]";
}
if (defined $results{$k}[3] ){
push @results, "$results{$k}[3]";
}
if (defined $results{$k}[4] ){
push @results, "$results{$k}[4]";
}
if (defined $results{$k}[5] ){
push @results, "$results{$k}[5]";
}
if (defined $results{$k}[6] ){
push @results, "$results{$k}[6]";
}
if (defined $results{$k}[7] ){
push @results, "$results{$k}[7]";
}
if (defined $results{$k}[8] ){
push @results, "$results{$k}[8]";
}
if (defined $results{$k}[9] ){
push @results, "$results{$k}[9]";
}
if (defined $results{$k}[10] ){
push @results, "$results{$k}[10]";
}
if (defined $results{$k}[11] ){
push @results, "$results{$k}[11]";
}
if (defined $results{$k}[12] ){
push @results, "$results{$k}[12]";
}
if (defined $results{$k}[13] ){
push @results, "$results{$k}[13]";
}
}
問題は、上記で行っていることを実行できますが、どういうわけか「オンザフライ」でコードを生成できるかどうかです。
ありがとう