私はPerlスクリプトを作成していますが、その一部を取得していません。grepは大文字小文字を区別せずにテキストファイル内の文字列を入力します
ホスト名のテキストファイルが1行に1つあります。
私は最初のものから読み取るホスト名のホスト名(ブラックリスト)を有する第二のファイルを検索する必要があります。 sageにするには、大文字と小文字を区別しないで検索する必要があります。
私の最初のアプローチは、Perl grep
を使用していたが、私はそれについて読んで、それは私がそれを必要なもののために非常に使用可能ではないようです。だから私はシェルを使用することを考えたgrep
。
私が知る限り、system
,qx
、バッククイック、open
で実行できます。
私は、grep
の終了ステータスコードを取得し、if
ステートメントで使用して、スクリプトが意図している作業の残りを行うことができるように、system
を使用することに決めました。私のコードは、この(grep
とテストスクリプト)次のようになります。
use strict;
use warnings;
my $blacklist_server = "de9899svc";
my $server = undef;
my $exit_value = undef;
open(SERVERLISTE,"/home/ansible/serverscan/scan_results/serverliste_22.02.17.txt") or die "$!";
OUTER: while (<SERVERLISTE>) {
$server = $_;
system("grep -i '\$server' /home/ansible/serverscan/black.list");
$exit_value = $? >> 8;
print "$exit_value\n";
}
close SERVERLISTE;
問題は$exit_value
は関係なく、ホスト名が一致するか否かの、常に1であること、です。だから、誰かが私には欠けているものを私に教えてくださいすることができます:)
'if(grep {/ $ server/i})'このようにしてください。 –
ssr1012