use strict;
use warnings;
my $truecount = 0;  #루프문 변수
my @offlist;  #오펜스 배열 변수
#Range는 리스트 갯수 조정
my @listcmd = "curl -S -X GET -u admin:password12! -k -H 'Range: items=0-100' -H 'Version: 15.0' -H 'Accept: application/json' 'https://<콘솔아이피>/api/siem/offenses?fields=id&filter=status%20%3D%20%22OPEN%22'";
my $arrcount;  #오펜스 배열 자리 변수
my $lenoff = 0;  #오펜스 배열 크기 변수

while($truecount == 0){
	if($lenoff == 0){
    	#[{"id":85562},{"id":85561}] => listcmd는 배열이 아닌 문자열로 저장됨
		my $list = qx(@listcmd);  #qx: 실행한 결과값 변수로 저장하는 함수
		$list =~ s/\{\[?"id":(\d+)\]?\}/$1/g;  #list내에 모든 {"id":숫자}를 숫자만으로 치환
		@offlist = split(/,/, $list);  #쉼표로 구분해서 배열로 새롭게 저장
		$lenoff = @offlist;  #배열 크기 저장
		$arrcount = 0;
	} else {
		for (my $i = 0; $i < $lenoff+1; $i++){  #1을 더해야 배열 크기가 정확함
			my $shfoff = @offlist[$arrcount];  #오펜스 배열의 숫자 불러오기
			$shfoff =~ s/\[?(\d+)]?/$1/;  #맨 처음, 뒤에 들어가는 [ 와 ] 제거
			if($shfoff =~ /\d+/ ){  #가끔 null 값을 피하기 위한 검사
				my @closecmd = ("curl -S -X POST -u admin:password12! -k -H 'Version: 15.0' -H 'Accept: application/json' 'https://<콘솔아이피>/api/siem/offenses/$shfoff?closing_reason_id=1&status=CLOSED'");
				system(@closecmd);
				$arrcount++;  #다음 배열을 가져오기 위함
			};
		};
		$lenoff = 0;  #초기화 - 새로운 리스트 받아오기
	};
};

꼬박 밤을 샜지만 재밌었다 ㅋㅋ

단점은 조금 느리다.
100개를 closing하는데 생각보다 오래 걸리는 느낌이든다.
나중에 python이나 Bash로 만들어서 API 테스트를 해봐야겠다.

+ Recent posts