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 테스트를 해봐야겠다.
'일 > IBM QRadar' 카테고리의 다른 글
[IBM QRadar] Automated offense closure (0) | 2021.10.15 |
---|---|
QRadar network_hierachy perl script (0) | 2021.10.07 |
QRadar 로그 소스 (소스포트) 생성 - 펄 스크립트 (0) | 2021.10.07 |
QRadar 설치 전 주의할점 (0) | 2021.08.11 |
IBM QRadar Structure (0) | 2021.08.06 |