From ed761fc8b4e0a125ad2b5237d64c3ef184c8146f Mon Sep 17 00:00:00 2001 From: AnilAntari Date: Fri, 9 May 2025 21:11:53 +0300 Subject: [PATCH 1/7] Added modules for antivirus programs Dr.Web and Kaspersky Endpoint Security --- .../Task/Inventory/Linux/AntiVirus/DrWeb.pm | 119 ++++++++++++++++++ .../Task/Inventory/Linux/AntiVirus/KESL.pm | 101 +++++++++++++++ 2 files changed, 220 insertions(+) create mode 100644 lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm create mode 100644 lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm diff --git a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm new file mode 100644 index 000000000..2a2a65396 --- /dev/null +++ b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm @@ -0,0 +1,119 @@ +package GLPI::Agent::Task::Inventory::Linux::AntiVirus::DrWeb; + +use strict; +use warnings; +use parent 'GLPI::Agent::Task::Inventory::Module'; + +use GLPI::Agent::Tools; +use Time::Piece; + +sub isEnabled { + return canRun('drweb-ctl'); +} + +sub doInventory { + my (%params) = @_; + + my $inventory = $params{inventory}; + my $logger = $params{logger}; + + my $antivirus = _getDrWebInfo(logger => $logger); + if ($antivirus) { + $inventory->addEntry( + section => 'ANTIVIRUS', + entry => $antivirus + ); + + $logger->debug2("Added $antivirus->{NAME}" . + ($antivirus->{VERSION} ? " v$antivirus->{VERSION}" : "") . + ($antivirus->{ENABLED} ? " [ENABLED]" : " [DISABLED]") . + ($antivirus->{EXPIRATION} ? " Expires: $antivirus->{EXPIRATION}" : + $antivirus->{SERVER_LICENSE} ? " [Server-managed license]" : "")) + if $logger; + } +} + +sub _getDrWebInfo { + my (%params) = @_; + my $logger = $params{logger}; + + my $av = { + NAME => 'Dr.Web', + COMPANY => 'Doctor Web', + ENABLED => 0, + UPTODATE => 0, + }; + + # 1. Get product version information + my $version_output = getFirstLine( + command => 'drweb-ctl --version 2>/dev/null', + %params + ); + + # Extract version number if available + if ($version_output && $version_output =~ /drweb-ctl\s+([\d.]+)/) { + $av->{VERSION} = $1; + } + + # 2. Check if Dr.Web service is running + my $service_status = getFirstLine( + command => 'systemctl is-active drweb-configd.service 2>/dev/null', + %params + ); + # Set ENABLED flag based on service status + $av->{ENABLED} = $service_status && $service_status eq 'active' ? 1 : 0; + + # 3. Get antivirus database information + my @baseinfo = getAllLines( + command => 'drweb-ctl baseinfo 2>/dev/null', + %params + ); + + my ($db_timestamp); + # Parse database timestamp from output + foreach my $line (@baseinfo) { + if ($line =~ /Virus database timestamp:\s+(.+)/) { + $db_timestamp = $1; + $av->{BASE_VERSION} = $1; # Store raw timestamp string + last; + } + } + + # Check if database is up-to-date (within 2 days) + if ($db_timestamp) { + eval { + my $db_time = Time::Piece->strptime($db_timestamp, "%Y-%b-%d %H:%M:%S"); + my $diff = time() - $db_time->epoch; + $av->{UPTODATE} = ($diff <= 172800) ? 1 : 0; # 172800 seconds = 2 days + }; + $av->{UPTODATE} = 0 if $@; + } + + # 4. Get license information + my @license_info = getAllLines( + command => 'drweb-ctl license 2>/dev/null', + %params + ); + + # Parse license information + foreach my $line (@license_info) { + if ($line =~ /expires\s+(\d{4}-\w{3}-\d{1,2})(?:\s|$)/i) { + eval { + my $expire_time = Time::Piece->strptime($1, "%Y-%b-%d"); + $av->{EXPIRATION} = $expire_time->strftime("%Y-%m-%d"); + }; + if ($@) { + $logger->debug("Failed to parse license expiration: $@"); + } + last; + } + elsif ($line =~ /license is granted by the protection server/i) { + $av->{SERVER_LICENSE} = 1; + last; + } + } + + return $av; +} + +1; \ No newline at end of file diff --git a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm new file mode 100644 index 000000000..d3a7aca5f --- /dev/null +++ b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm @@ -0,0 +1,101 @@ +package GLPI::Agent::Task::Inventory::Linux::AntiVirus::KESL; + +use strict; +use warnings; +use parent 'GLPI::Agent::Task::Inventory::Module'; + +use GLPI::Agent::Tools; +use Time::Piece; + +sub isEnabled { + return canRun('kesl-control'); +} + +sub doInventory { + my (%params) = @_; + + my $inventory = $params{inventory}; + my $logger = $params{logger}; + + my $antivirus = _getKESLInfo(logger => $logger); + if ($antivirus) { + $inventory->addEntry( + section => 'ANTIVIRUS', + entry => $antivirus + ); + + $logger->debug2("Added $antivirus->{NAME}" . + ($antivirus->{VERSION} ? " v$antivirus->{VERSION}" : "") . + ($antivirus->{ENABLED} ? " [ENABLED]" : " [DISABLED]") . + ($antivirus->{EXPIRATION} ? " Expires: $antivirus->{EXPIRATION}" : "")) + if $logger; + } +} + +sub _getKESLInfo { + my (%params) = @_; + my $logger = $params{logger}; + + my $av = { + NAME => 'Kaspersky Endpoint Security for Linux', + COMPANY => 'Kaspersky Lab', + ENABLED => 0, + UPTODATE => 0, + }; + + # 1. Check if KESL service is running via systemd + my $service_status = getFirstLine( + command => 'systemctl is-active kesl.service 2>/dev/null', + %params + ); + # Set ENABLED flag based on service status (active = 1, inactive = 0) + $av->{ENABLED} = $service_status && $service_status eq 'active' ? 1 : 0; + + # 2. Get product version information + my $version_output = getFirstLine( + command => 'kesl-control --app-info 2>/dev/null | grep -E "Version|Версия"', + %params + ); + # Extract version number from either English or Russian output + if ($version_output && $version_output =~ /(?:Version|Версия):\s+([\d.]+)/) { + $av->{VERSION} = $1; + } + + # 3. Get license expiration information + my $license_output = getFirstLine( + command => 'kesl-control --app-info 2>/dev/null | grep -E "License expiration date|Дата окончания срока действия лицензии"', + %params + ); + # Parse expiration date from either English or Russian output + if ($license_output && $license_output =~ /(?:License expiration date|Дата окончания срока действия лицензии):\s+([\d-]+)/) { + eval { + my $expire_time = Time::Piece->strptime($1, "%Y-%m-%d"); + $av->{EXPIRATION} = $expire_time->strftime("%Y-%m-%d"); + }; + if ($@) { + $logger->debug("Failed to parse license expiration: $@"); + } + } + + # 4. Get antivirus database update information + my $db_date_output = getFirstLine( + command => 'kesl-control --app-info 2>/dev/null | grep -E "Last release date of databases|Дата последнего выпуска баз приложения"', + %params + ); + # Parse database timestamp from either English or Russian output + if ($db_date_output && $db_date_output =~ /(?:Last release date of databases|Дата последнего выпуска баз приложения):\s+([\d-]+\s[\d:]+)/) { + eval { + my $db_time = Time::Piece->strptime($1, "%Y-%m-%d %H:%M:%S"); + my $diff = time() - $db_time->epoch; + # Mark as up-to-date if databases are less than 2 days old (172800 seconds) + $av->{UPTODATE} = ($diff <= 172800) ? 1 : 0; + }; + if ($@) { + $logger->debug("Failed to parse database timestamp: $@"); + } + } + + return $av; +} + +1; \ No newline at end of file From 3d46ea390a2bcbe32f833be4a57eda2574eab68d Mon Sep 17 00:00:00 2001 From: AnilAntari Date: Mon, 16 Jun 2025 21:16:40 +0300 Subject: [PATCH 2/7] Updating modules DrWeb.pm and KESL.pm --- .../Task/Inventory/Linux/AntiVirus/DrWeb.pm | 55 ++--------------- .../Task/Inventory/Linux/AntiVirus/KESL.pm | 60 ++++++------------- 2 files changed, 23 insertions(+), 92 deletions(-) diff --git a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm index 2a2a65396..915e68160 100644 --- a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm +++ b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm @@ -5,7 +5,6 @@ use warnings; use parent 'GLPI::Agent::Task::Inventory::Module'; use GLPI::Agent::Tools; -use Time::Piece; sub isEnabled { return canRun('drweb-ctl'); @@ -26,9 +25,7 @@ sub doInventory { $logger->debug2("Added $antivirus->{NAME}" . ($antivirus->{VERSION} ? " v$antivirus->{VERSION}" : "") . - ($antivirus->{ENABLED} ? " [ENABLED]" : " [DISABLED]") . - ($antivirus->{EXPIRATION} ? " Expires: $antivirus->{EXPIRATION}" : - $antivirus->{SERVER_LICENSE} ? " [Server-managed license]" : "")) + ($antivirus->{ENABLED} ? " [ENABLED]" : " [DISABLED]")) if $logger; } } @@ -44,71 +41,29 @@ sub _getDrWebInfo { UPTODATE => 0, }; - # 1. Get product version information my $version_output = getFirstLine( - command => 'drweb-ctl --version 2>/dev/null', + command => 'LANG=C drweb-ctl --version', %params ); - # Extract version number if available if ($version_output && $version_output =~ /drweb-ctl\s+([\d.]+)/) { $av->{VERSION} = $1; } - # 2. Check if Dr.Web service is running my $service_status = getFirstLine( - command => 'systemctl is-active drweb-configd.service 2>/dev/null', + command => 'LANG=C systemctl is-active drweb-configd.service', %params ); - # Set ENABLED flag based on service status $av->{ENABLED} = $service_status && $service_status eq 'active' ? 1 : 0; - # 3. Get antivirus database information my @baseinfo = getAllLines( - command => 'drweb-ctl baseinfo 2>/dev/null', + command => 'LANG=C drweb-ctl baseinfo', %params ); - my ($db_timestamp); - # Parse database timestamp from output foreach my $line (@baseinfo) { if ($line =~ /Virus database timestamp:\s+(.+)/) { - $db_timestamp = $1; - $av->{BASE_VERSION} = $1; # Store raw timestamp string - last; - } - } - - # Check if database is up-to-date (within 2 days) - if ($db_timestamp) { - eval { - my $db_time = Time::Piece->strptime($db_timestamp, "%Y-%b-%d %H:%M:%S"); - my $diff = time() - $db_time->epoch; - $av->{UPTODATE} = ($diff <= 172800) ? 1 : 0; # 172800 seconds = 2 days - }; - $av->{UPTODATE} = 0 if $@; - } - - # 4. Get license information - my @license_info = getAllLines( - command => 'drweb-ctl license 2>/dev/null', - %params - ); - - # Parse license information - foreach my $line (@license_info) { - if ($line =~ /expires\s+(\d{4}-\w{3}-\d{1,2})(?:\s|$)/i) { - eval { - my $expire_time = Time::Piece->strptime($1, "%Y-%b-%d"); - $av->{EXPIRATION} = $expire_time->strftime("%Y-%m-%d"); - }; - if ($@) { - $logger->debug("Failed to parse license expiration: $@"); - } - last; - } - elsif ($line =~ /license is granted by the protection server/i) { - $av->{SERVER_LICENSE} = 1; + $av->{BASE_VERSION} = $1; last; } } diff --git a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm index d3a7aca5f..820c1606e 100644 --- a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm +++ b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm @@ -5,7 +5,6 @@ use warnings; use parent 'GLPI::Agent::Task::Inventory::Module'; use GLPI::Agent::Tools; -use Time::Piece; sub isEnabled { return canRun('kesl-control'); @@ -37,61 +36,38 @@ sub _getKESLInfo { my $logger = $params{logger}; my $av = { - NAME => 'Kaspersky Endpoint Security for Linux', + NAME => 'Kaspersky Endpoint Security for Linux', COMPANY => 'Kaspersky Lab', - ENABLED => 0, + ENABLED => 0, UPTODATE => 0, }; - # 1. Check if KESL service is running via systemd my $service_status = getFirstLine( - command => 'systemctl is-active kesl.service 2>/dev/null', + command => 'LANG=en_US.UTF-8 systemctl is-active kesl.service', %params ); - # Set ENABLED flag based on service status (active = 1, inactive = 0) $av->{ENABLED} = $service_status && $service_status eq 'active' ? 1 : 0; - # 2. Get product version information - my $version_output = getFirstLine( - command => 'kesl-control --app-info 2>/dev/null | grep -E "Version|Версия"', + my @app_info = getAllLines( + command => 'LANG=en_US.UTF-8 kesl-control --app-info', %params ); - # Extract version number from either English or Russian output - if ($version_output && $version_output =~ /(?:Version|Версия):\s+([\d.]+)/) { - $av->{VERSION} = $1; - } - # 3. Get license expiration information - my $license_output = getFirstLine( - command => 'kesl-control --app-info 2>/dev/null | grep -E "License expiration date|Дата окончания срока действия лицензии"', - %params - ); - # Parse expiration date from either English or Russian output - if ($license_output && $license_output =~ /(?:License expiration date|Дата окончания срока действия лицензии):\s+([\d-]+)/) { - eval { - my $expire_time = Time::Piece->strptime($1, "%Y-%m-%d"); - $av->{EXPIRATION} = $expire_time->strftime("%Y-%m-%d"); - }; - if ($@) { - $logger->debug("Failed to parse license expiration: $@"); + foreach my $line (@app_info) { + + if (!$av->{VERSION} && $line =~ /Version:\s+([\d.]+)/) { + $av->{VERSION} = $1; + next; } - } - # 4. Get antivirus database update information - my $db_date_output = getFirstLine( - command => 'kesl-control --app-info 2>/dev/null | grep -E "Last release date of databases|Дата последнего выпуска баз приложения"', - %params - ); - # Parse database timestamp from either English or Russian output - if ($db_date_output && $db_date_output =~ /(?:Last release date of databases|Дата последнего выпуска баз приложения):\s+([\d-]+\s[\d:]+)/) { - eval { - my $db_time = Time::Piece->strptime($1, "%Y-%m-%d %H:%M:%S"); - my $diff = time() - $db_time->epoch; - # Mark as up-to-date if databases are less than 2 days old (172800 seconds) - $av->{UPTODATE} = ($diff <= 172800) ? 1 : 0; - }; - if ($@) { - $logger->debug("Failed to parse database timestamp: $@"); + if (!$av->{EXPIRATION} && $line =~ /license expiration date:\s+([\d-]+\s[\d:]+)/i) { + $av->{EXPIRATION} = $1; + next; + } + + if (!$av->{BASE_VERSION} && $line =~ /Last release date of databases:\s+([\d-]+\s[\d:]+)/) { + $av->{BASE_VERSION} = $1; + next; } } From 7b3d50fbb52a24d31fe15d1a0734c1346ce39ba4 Mon Sep 17 00:00:00 2001 From: AnilAntari Date: Thu, 19 Jun 2025 22:02:03 +0300 Subject: [PATCH 3/7] Updating modules DrWeb.pm and KESL.pm --- .../Task/Inventory/Linux/AntiVirus/DrWeb.pm | 18 +++++++++++++++--- .../Task/Inventory/Linux/AntiVirus/KESL.pm | 12 ++++++------ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm index 915e68160..9a1a1dd45 100644 --- a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm +++ b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm @@ -62,13 +62,25 @@ sub _getDrWebInfo { ); foreach my $line (@baseinfo) { - if ($line =~ /Virus database timestamp:\s+(.+)/) { - $av->{BASE_VERSION} = $1; + if ($line =~ /^Virus database timestamp:\s+(\d+)-(\w+)-(\d+)/) { + my $month_num = month($2) || 0; + $av->{BASE_VERSION} = sprintf("%d-%02d-%02d", $1, $month_num, $3); last; } } + my $expiration = getFirstMatch( + command => 'drweb-ctl license', + pattern => qr/expires (\d+-\w+-\d+)/, + %params + ); + if ($expiration && $expiration =~ /^(\d+)-(\w+)-(\d+)$/) { + my $m = month($2); + $av->{EXPIRATION} = sprintf("%d-%02d-%02d", $1, $m, $3) if $m; + } + + return $av; } -1; \ No newline at end of file +1; diff --git a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm index 820c1606e..773c3c2e5 100644 --- a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm +++ b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm @@ -43,29 +43,29 @@ sub _getKESLInfo { }; my $service_status = getFirstLine( - command => 'LANG=en_US.UTF-8 systemctl is-active kesl.service', + command => 'systemctl is-active kesl.service', %params ); $av->{ENABLED} = $service_status && $service_status eq 'active' ? 1 : 0; my @app_info = getAllLines( - command => 'LANG=en_US.UTF-8 kesl-control --app-info', + command => 'kesl-control --app-info', %params ); foreach my $line (@app_info) { - if (!$av->{VERSION} && $line =~ /Version:\s+([\d.]+)/) { + if (!$av->{VERSION} && $line =~ /^Version:\s+([\d.]+)/) { $av->{VERSION} = $1; next; } - if (!$av->{EXPIRATION} && $line =~ /license expiration date:\s+([\d-]+\s[\d:]+)/i) { + if (!$av->{EXPIRATION} && $line =~ /license expiration date:\s+([\d-]+)/i) { $av->{EXPIRATION} = $1; next; } - if (!$av->{BASE_VERSION} && $line =~ /Last release date of databases:\s+([\d-]+\s[\d:]+)/) { + if (!$av->{BASE_VERSION} && $line =~ /^Last release date of databases:\s+([\d-]+)/) { $av->{BASE_VERSION} = $1; next; } @@ -74,4 +74,4 @@ sub _getKESLInfo { return $av; } -1; \ No newline at end of file +1; From 5b6571396626cd83c63b02cbe9e03cabe9139ef0 Mon Sep 17 00:00:00 2001 From: AnilAntari Date: Thu, 19 Jun 2025 22:05:31 +0300 Subject: [PATCH 4/7] Correction for the module DrWeb.pm --- lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm index 9a1a1dd45..1a6391a88 100644 --- a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm +++ b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm @@ -42,7 +42,7 @@ sub _getDrWebInfo { }; my $version_output = getFirstLine( - command => 'LANG=C drweb-ctl --version', + command => 'drweb-ctl --version', %params ); @@ -51,13 +51,13 @@ sub _getDrWebInfo { } my $service_status = getFirstLine( - command => 'LANG=C systemctl is-active drweb-configd.service', + command => 'systemctl is-active drweb-configd.service', %params ); $av->{ENABLED} = $service_status && $service_status eq 'active' ? 1 : 0; my @baseinfo = getAllLines( - command => 'LANG=C drweb-ctl baseinfo', + command => 'drweb-ctl baseinfo', %params ); From d498218a82bf74d21191870eeb5d22d7d3a4d928 Mon Sep 17 00:00:00 2001 From: AnilAntari <86964331+AnilAntari@users.noreply.github.com> Date: Fri, 20 Jun 2025 14:04:23 +0300 Subject: [PATCH 5/7] Update DrWeb.pm --- lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm index 1a6391a88..a0f9f8f32 100644 --- a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm +++ b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm @@ -62,10 +62,8 @@ sub _getDrWebInfo { ); foreach my $line (@baseinfo) { - if ($line =~ /^Virus database timestamp:\s+(\d+)-(\w+)-(\d+)/) { - my $month_num = month($2) || 0; - $av->{BASE_VERSION} = sprintf("%d-%02d-%02d", $1, $month_num, $3); - last; + if ($line =~ /^Virus database timestamp:\s+(\S+)/) { + $av->{BASE_VERSION} = $1; } } From 2fb35dfe7fd0587ad79e10cbd9ed76ee329cf630 Mon Sep 17 00:00:00 2001 From: AnilAntari Date: Fri, 20 Jun 2025 19:26:07 +0300 Subject: [PATCH 6/7] Update DrWeb.pm --- lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm index a0f9f8f32..df7d4cf8b 100644 --- a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm +++ b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/DrWeb.pm @@ -32,13 +32,12 @@ sub doInventory { sub _getDrWebInfo { my (%params) = @_; - my $logger = $params{logger}; my $av = { NAME => 'Dr.Web', - COMPANY => 'Doctor Web', - ENABLED => 0, - UPTODATE => 0, + COMPANY => 'Doctor Web', + ENABLED => 0, + UPTODATE => 0, }; my $version_output = getFirstLine( From 7fd44e2cfdc0d004bac12983e3560261b140ae53 Mon Sep 17 00:00:00 2001 From: AnilAntari Date: Sat, 21 Jun 2025 17:45:40 +0300 Subject: [PATCH 7/7] Update KESL.pm --- lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm index 773c3c2e5..efb40e8ee 100644 --- a/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm +++ b/lib/GLPI/Agent/Task/Inventory/Linux/AntiVirus/KESL.pm @@ -33,7 +33,6 @@ sub doInventory { sub _getKESLInfo { my (%params) = @_; - my $logger = $params{logger}; my $av = { NAME => 'Kaspersky Endpoint Security for Linux',