과부하 테스트를 위해서 어제 펄 스크립트를 작성하여 실행하고 잤더니 결과는 대만족입니다.

소스포트를 1씩 늘려가면서 오펜스를 소스포트 기반으로 뜨게 만들었습니다.

 

use strict;
use warnings;
my $srcpt;
my $content;

for(my $i = 0; $i < 500000; $i++) {
	open (TEXT, "+<offense500k.log");
	chomp($content = <TEXT>);
	if($content =~ /srcport=(\d+)/){
		$srcpt = $1 + 1;
	};
	$content =~ s/srcport=(\d+)/srcport=$srcpt/;
	seek(TEXT,0,0);
	print "TEST log: ", $content, "!\n";
	print TEXT $content;
	close TEXT;
	system '/opt/qradar/bin/logrun.pl -u 192.168.0.10 -f offense500k.log 1';
	print "Success number", $i, "!\n";
};

일단 50만개를 만들어줄거라서 for문을 열었습니다.

 

open 함수로 샘플 로그파일을 입출력모드로 열고

샘플 로그파일이 한줄짜리라서 chomp로 변수 $content에 할당했습니다.

로그파일에 있는 소스포트를 받기위해 if문을 작성하여 변수 $srcpt에 1을 더해 저장했습니다.

 

$content 내용에서 srcport를 정규식으로 찾은 후, 아까 if문에서 1을 더한 $srcpt로 치환했습니다.

seek 함수는 입력 포인트를 처음으로 이동하게 하였습니다. (맨 끝에 추가가 아닌 덮어쓰기를 위해서)

로그가 제대로 바뀌었는지 터미널에 바뀐 로그를 출력하고

print TEXT $content; 에서 샘플 로그 파일에 바뀐 로그를 덮어씌우게 됩니다.

close로 파일을 닫고

system으로 QRadar의 logrun.pl 명령어를 작성해주면 끝입니다.

 

펄 스크립트는 처음 써봤는데 요즘은 덜 쓰는 언어이지만 간단한 명령을 실행할때 편합니다.

+ Recent posts