You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by ar...@apache.org on 2015/02/24 19:44:25 UTC
svn commit: r1662080 - in /vcl/trunk/managementnode/lib/VCL: Module/OS.pm
Module/OS/Linux.pm Module/OS/Linux/firewall/iptables.pm reserved.pm utils.pm
Author: arkurth
Date: Tue Feb 24 18:44:24 2015
New Revision: 1662080
URL: http://svn.apache.org/r1662080
Log:
Updated reserved.pm::process to check for a computerloadlog 'initialconnecttimeout' entry for the parent reservation ID. The frontend only inserts the entry for the parent. This was generating warnings.
VCL-174
Changed OS.pm::process_connect_methods to pass a string consisting of the vcld process name and reservation ID to add_nat_port_forward instead of just the reservation ID. This will make it easier to identify which firewall chains/rules were created by a particular vcld daemon.
Updated iptables.pm::get_table_info to parse the table information and create a hash reference.
VCL-678
Commented out unnecessary vcld.log messages in utils.pm::is_management_node_process_running.
VCL-702
Updated Linux.pm::activate_interfaces to use OS.pm::create_text_file. It had been calling echo with a \E argument to create ifcfg* files. The argument was generating warnings.
Modified:
vcl/trunk/managementnode/lib/VCL/Module/OS.pm
vcl/trunk/managementnode/lib/VCL/Module/OS/Linux.pm
vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/firewall/iptables.pm
vcl/trunk/managementnode/lib/VCL/reserved.pm
vcl/trunk/managementnode/lib/VCL/utils.pm
Modified: vcl/trunk/managementnode/lib/VCL/Module/OS.pm
URL: http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/OS.pm?rev=1662080&r1=1662079&r2=1662080&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/OS.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/OS.pm Tue Feb 24 18:44:24 2015
@@ -2977,7 +2977,7 @@ sub process_connect_methods {
return;
}
- if ($self->nathost_os->firewall->add_nat_port_forward($protocol, $nat_public_port, $computer_ip_address, $port, $reservation_id)) {
+ if ($self->nathost_os->firewall->add_nat_port_forward($protocol, $nat_public_port, $computer_ip_address, $port, "$PROCESSNAME-$reservation_id")) {
notify($ERRORS{'OK'}, 0, "NAT port forwarding configured on $nathost_hostname for '$name' connect method: $nathost_public_ip_address:$nat_public_port --> $computer_ip_address:$port ($protocol)");
}
else {
Modified: vcl/trunk/managementnode/lib/VCL/Module/OS/Linux.pm
URL: http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/OS/Linux.pm?rev=1662080&r1=1662079&r2=1662080&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/OS/Linux.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/OS/Linux.pm Tue Feb 24 18:44:24 2015
@@ -2254,19 +2254,25 @@ STARTMODE=onboot
ONBOOT=yes
EOF
- # Create the ifcfg-eth* file and attempt to call ifup on the interface
- my $echo_command = "echo \E \"$ifcfg_contents\" > $ifcfg_path && ifup $interface_name";
- notify($ERRORS{'DEBUG'}, 0, "attempting to echo contents to $ifcfg_path:\n$ifcfg_contents");
- my ($echo_exit_status, $echo_output) = $self->execute($echo_command, 1);
- if (!defined($echo_output)) {
- notify($ERRORS{'WARNING'}, 0, "failed to run command to echo contents to $ifcfg_path");
+ # Create the ifcfg file
+ if (!$self->create_text_file($ifcfg_path, $ifcfg_contents)) {
+ notify($ERRORS{'WARNING'}, 0, "failed to create $ifcfg_path for interface: $interface_name");
return;
}
- elsif (grep(/done\./, @$echo_output)) {
- notify($ERRORS{'OK'}, 0, "created $ifcfg_path and enabled interface: $interface_name, output:\n" . join("\n", @$echo_output));
+
+ # Call ifup on the interface
+ my $command = "ifup $interface_name";
+ my ($exit_status, $output) = $self->execute($command, 1);
+ if (!defined($output)) {
+ notify($ERRORS{'WARNING'}, 0, "failed to execute command to activate $interface_name interface: $command");
+ return;
+ }
+ elsif ($exit_status eq '0' || grep(/done\./, @$output)) {
+ notify($ERRORS{'OK'}, 0, "activated $interface_name interface, output:\n" . join("\n", @$output));
}
else {
- notify($ERRORS{'WARNING'}, 0, "failed to create $ifcfg_path and enable interface: $interface_name, output:\n" . join("\n", @$echo_output));
+ notify($ERRORS{'WARNING'}, 0, "failed to activate $interface_name interface, exit status: $exit_status, output:\n" . join("\n", @$output));
+ return;
}
}
Modified: vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/firewall/iptables.pm
URL: http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/firewall/iptables.pm?rev=1662080&r1=1662079&r2=1662080&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/firewall/iptables.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/firewall/iptables.pm Tue Feb 24 18:44:24 2015
@@ -154,7 +154,14 @@ sub insert_rule {
$value = "\"$value\"";
}
- $command .= " --$option $value";
+ if ($option =~ /^\!/) {
+ $command .= " !";
+ $option =~ s/^\!//;
+ }
+
+ $command .= " ";
+ $command .= "--$option " if $option;
+ $command .= $value;
}
}
@@ -163,7 +170,8 @@ sub insert_rule {
$command .= " --jump $target_extension";
for my $option (sort keys %{$arguments->{target_extensions}{$target_extension}}) {
my $value = $arguments->{target_extensions}{$target_extension}{$option};
- $command .= " --$option $value";
+ $command .= " --$option " if $option;
+ $command .= $value;
}
}
@@ -436,7 +444,8 @@ sub delete_chain_references {
my $table_info = $self->get_table_info($table_name);
for my $referencing_chain_name (keys %$table_info) {
- for my $rule_specification (@{$table_info->{$referencing_chain_name}{rules}}) {
+ for my $rule (@{$table_info->{$referencing_chain_name}{rules}}) {
+ my $rule_specification = $rule->{rule_specification};
if ($rule_specification =~ /-j $referenced_chain_name(\s|$)/) {
notify($ERRORS{'DEBUG'}, 0, "rule in '$table_name' table references '$referenced_chain_name' chain, referencing chain: $referencing_chain_name, rule specification: $rule_specification");
if (!$self->delete_rule($table_name, $referencing_chain_name, $rule_specification)) {
@@ -544,34 +553,238 @@ sub get_table_info {
notify($ERRORS{'WARNING'}, 0, "failed to list rules " . $chain_text . "from '$table_name' table on $computer_name, exit status: $exit_status, command:\n$command\noutput:\n" . join("\n", @$output));
return 0;
}
-
+
my $table_info = {};
- for my $line (@$output) {
- my ($iptables_command, $chain_name, $specification) = $line =~ /^(-\w) ([^ ]+)\s*(.*)$/;
- if (!defined($iptables_command) || !defined($chain_name)) {
- notify($ERRORS{'WARNING'}, 0, "failed to parse line: '$line'\ncommand: $command");
- next;
+ LINE: for my $line (@$output) {
+ # Split the rule, samples:
+ # -P OUTPUT ACCEPT
+ # -N vcld-3115
+ # -A PREROUTING -j vclark-3115
+ # -A POSTROUTING ! -d 192.168.96.0/20 -o eth1
+ # -A INPUT -d 192.168.96.0/32 -i eth1 -p udp -m multiport --dports 5700:6500,9696:9701,49152:65535 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
+ my ($iptables_command, $chain_name, $rule_specification_string) = $line =~
+ /
+ ^
+ (--?[a-z\-]+) # command: -A, -N, etc
+ \s+ # space after command
+ ([^ ]+) # chain name
+ \s* # space after chain name
+ (.*) # remainder of rule
+ \s* # trailing spaces
+ $
+ /ixg;
+
+ if (!defined($iptables_command)) {
+ notify($ERRORS{'WARNING'}, 0, "failed to parse iptables rule, iptables command type (ex. '-A') could not be parsed from beginning of line:\n$line");
+ next LINE;
+ }
+ elsif (!defined($chain_name)) {
+ notify($ERRORS{'WARNING'}, 0, "failed to parse iptables rule, iptables chain name could not be parsed from line:\n$line");
+ next LINE;
}
- $specification = '' unless defined($specification);
- if ($iptables_command eq '-P') {
+ # Make sure the rule specification isn't null to avoid warnings
+ $rule_specification_string = '' unless defined($rule_specification_string);
+
+ # Remove spaces from end of rule specification
+ $rule_specification_string =~ s/\s+$//;
+
+ if ($iptables_command =~ /^(-P|--policy)/) {
# -P, --policy chain target (Set the policy for the chain to the given target)
- $table_info->{$chain_name}{policy} = $specification;
+ $table_info->{$chain_name}{policy} = $rule_specification_string;
}
- elsif ($iptables_command eq '-N') {
+ elsif ($iptables_command =~ /^(-N|--new-chain)/) {
# -N, --new-chain chain
$table_info->{$chain_name} = {} unless defined($table_info->{$chain_name});
}
- elsif ($iptables_command eq '-A') {
+ elsif ($iptables_command =~ /^(-A|--append chain)/) {
# -A, --append chain rule-specification
- push @{$table_info->{$chain_name}{rules}}, $specification;
+ notify($ERRORS{'DEBUG'}, 0, "parsing iptables append rule command:\n" .
+ "iptables command: $line\n" .
+ "iptables rule specification: $rule_specification_string"
+ );
+
+ my $rule = {};
+ $rule->{rule_specification} = $rule_specification_string;
+
+ # Parse the rule parameters
+ my $parameters = {
+ 'protocol' => '\s*(\!?)\s*(-p|--protocol)\s+([^\s]+)',
+ 'source' => '\s*(\!?)\s*(-s|--source)\s+([\d\.\/]+)',
+ 'destination' => '\s*(\!?)\s*(-d|--destination)\s+([\d\.\/]+)',
+ 'in-interface' => '\s*(\!?)\s*(-i|--in-interface)\s+([^\s]+)',
+ 'out-interface' => '\s*(\!?)\s*(-o|--out-interface)\s+([^\s]+)',
+ 'fragment' => '\s*(\!?)\s*(-f|--fragment)',
+ };
+
+ PARAMETER: for my $parameter (keys %$parameters) {
+ my $pattern = $parameters->{$parameter};
+ my ($inverted, $parameter_match, $value) = $rule_specification_string =~ /$pattern/ig;
+ next PARAMETER unless $parameter_match;
+
+ if ($inverted) {
+ $rule->{parameters}{"!$parameter"} = $value;
+ }
+ else {
+ $rule->{parameters}{$parameter} = $value;
+ }
+
+ # Remove the matching pattern from the rule specification string
+ # This is done to make it easier to parse the match extension parts of the specification later on
+ $rule_specification_string =~ s/(^\s+|$pattern|\s+$)//ig;
+ }
+
+ # Parse the target rule parameters
+ my $target_parameters = {
+ 'jump' => '\s*(-j|--jump)\s+([^\s]+)\s*(.*)',
+ 'goto' => '\s*(-g|--goto)\s+([^\s]+)\s*(.*)',
+ };
+
+ # Parse the parameters which specify targets
+ TARGET_PARAMETER: for my $target_parameter (keys %$target_parameters) {
+ my $pattern = $target_parameters->{$target_parameter};
+ my ($target_parameter_match, $target, $target_extension_option_string) = $rule_specification_string =~ /$pattern/ig;
+ next TARGET_PARAMETER unless $target_parameter_match;
+
+ # Assemble a regex to remove the target specification from the overall specification
+ my $target_parameter_regex = "\\s*$target_parameter_match\\s+$target\\s*";
+
+ $rule->{parameters}{$target_parameter}{target} = $target;
+
+ my $target_extension_option_name;
+ my @target_extension_option_sections = split(/\s+/, $target_extension_option_string);
+ TARGET_OPTION_SECTION: for my $target_extension_option_section (@target_extension_option_sections) {
+ # Stop parsing if the start of a match extension specification if found
+ if ($target_extension_option_section =~ /^(-m|--match)$/) {
+ last TARGET_OPTION_SECTION;
+ }
+
+ # Check if this is the beginning of a target extension option
+ if ($target_extension_option_section =~ /^[-]+(\w[\w-]+)/) {
+ $target_extension_option_name = $1;
+ notify($ERRORS{'DEBUG'}, 0, "located $target_parameter target extension option: $target_extension_option_name");
+ $rule->{parameters}{$target_parameter}{$target_extension_option_name} = undef;
+ }
+ elsif (!$target_extension_option_name) {
+ # If here, the section should be a target extension option value
+ notify($ERRORS{'WARNING'}, 0, "failed to parse iptables rule, target extension option name was not detected before this section: '$target_extension_option_section'\n" .
+ "iptables command: $line\n" .
+ "preceeding target parameter: $target_parameter --> $target"
+ );
+ next LINE;
+ }
+ else {
+ # Found target extension option value
+ $rule->{parameters}{$target_parameter}{$target_extension_option_name} = $target_extension_option_section;
+ $target_extension_option_name = undef;
+ }
+
+ # Add the section to the regex so it will be removed
+ $target_parameter_regex .= "$target_extension_option_section\\s*";
+ } # TARGET_OPTION_SECTION
+
+ my $rule_specification_string_before = $rule_specification_string;
+ $rule_specification_string =~ s/$target_parameter_regex//g;
+ notify($ERRORS{'DEBUG'}, 0, "parsed iptables target parameter:\n" .
+ "target parameter: $target_parameter_match\n" .
+ "target: $target\n" .
+ "target specification removal regex: $target_parameter_regex\n" .
+ "rule specification before: $rule_specification_string_before\n" .
+ "rule specification after: $rule_specification_string"
+ );
+ } # TARGET_PARAMETER
+
+
+ # The only text remaining in $rule_specification_string should be match extension information
+ # Split the remaining string by spaces
+ my @match_extension_sections = split(/\s+/, $rule_specification_string);
+
+ # Match extensions will be in the form:
+ # -m,--match <module> [!] -<x>,--<option> <value> [[!] -<x>,--<option> <value>...]
+ my $match_extension_module_name;
+ my $match_extension_option;
+ my $match_extension_option_inverted = 0;
+ my $comment;
+
+ MATCH_EXTENSION_SECTION: for my $match_extension_section (@match_extension_sections) {
+ next MATCH_EXTENSION_SECTION if !$match_extension_section;
+
+ # Check if the section is the beginning of a match extension specification
+ if ($match_extension_section =~ /^(-m|--match)$/) {
+ $match_extension_module_name = undef;
+ $match_extension_option = undef;
+ $match_extension_option_inverted = 0;
+ next MATCH_EXTENSION_SECTION;
+ }
+
+ # Parse match extension module name
+ if (!$match_extension_module_name) {
+ # Haven't found module name for this match extension specification
+ # If section begins with a letter it should be the match extension module name
+ if ($match_extension_section =~ /^[a-z]/i) {
+ $match_extension_module_name = $match_extension_section;
+ notify($ERRORS{'DEBUG'}, 0, "located match extension module name: $match_extension_module_name");
+ next MATCH_EXTENSION_SECTION;
+ }
+ else {
+ notify($ERRORS{'WARNING'}, 0, "failed to parse iptables rule, match extension module name was not detected before this section: '$match_extension_section'\n" .
+ "iptables rule specification: $rule_specification_string\n" .
+ "iptables command: $line"
+ );
+ next LINE;
+ }
+ }
+
+ # Check if this is the beginning of a match extension option
+ if ($match_extension_section =~ /^[-]+(\w[\w-]+)/) {
+ $match_extension_option = $1;
+ if ($match_extension_option_inverted) {
+ $match_extension_option = "!$match_extension_option";
+ $match_extension_option_inverted = 0;
+ }
+ notify($ERRORS{'DEBUG'}, 0, "match extension module name: $match_extension_module_name, located match extension option: $match_extension_option");
+ next MATCH_EXTENSION_SECTION;
+ }
+ elsif ($match_extension_section =~ /^!/) {
+ $match_extension_option_inverted = 1;
+ next MATCH_EXTENSION_SECTION;
+ }
+
+ # If here, the section should be (part of) a match extension option value
+ if (!$match_extension_option) {
+ notify($ERRORS{'WARNING'}, 0, "failed to parse iptables rule, match extension option name was not detected before this section: '$match_extension_section'\n" .
+ "iptables command: $line\n" .
+ "iptables rule specification: $rule_specification_string\n" .
+ "preceeding match extension module name: $match_extension_module_name"
+ );
+ next LINE;
+ }
+
+ # Check if this is part of a comment
+ if ($match_extension_module_name =~ /(comment)/) {
+ $comment .= "$match_extension_section ";
+ next MATCH_EXTENSION_SECTION;
+ }
+
+ $rule->{match_extensions}{$match_extension_module_name}{$match_extension_option} = $match_extension_section;
+ }
+
+ if ($comment) {
+ # Remove quotes from beginning and end of comment
+ $comment =~ s/(^[\\\"]+|[\s\\\"]+$)//g;
+ $rule->{match_extensions}{comment}{comment} = $comment;
+ $comment = undef;
+ }
+
+ push @{$table_info->{$chain_name}{rules}}, $rule;
}
else {
- notify($ERRORS{'WARNING'}, 0, "'$iptables_command' command is not supported: $line");
+ notify($ERRORS{'WARNING'}, 0, "iptables '$iptables_command' command is not supported: $line");
+ next LINE;
}
}
- notify($ERRORS{'DEBUG'}, 0, "retrieved rules " . $chain_text . "from '$table_name' table from $computer_name:\n" . format_data($table_info));
+ #notify($ERRORS{'DEBUG'}, 0, "retrieved rules " . $chain_text . "from iptables $table_name table from $computer_name:\n" . format_data($table_info));
return $table_info;
}
@@ -626,9 +839,9 @@ sub configure_nat {
}
# Check if NAT has previously been configured
- for my $rule_specification (@{$nat_table_info->{POSTROUTING}{rules}}) {
- if ($rule_specification =~ /MASQUERADE/) {
- notify($ERRORS{'DEBUG'}, 0, "POSTROUTING chain in nat table contains a MASQUERADE rule, assuming NAT has already been configured: $rule_specification");
+ for my $rule (@{$nat_table_info->{POSTROUTING}{rules}}) {
+ if ($rule =~ /MASQUERADE/) {
+ notify($ERRORS{'DEBUG'}, 0, "POSTROUTING chain in nat table contains a MASQUERADE rule, assuming NAT has already been configured: $rule");
return 1;
}
}
@@ -809,19 +1022,21 @@ sub configure_nat_reservation {
return;
}
+ my $chain_name = "$PROCESSNAME-$reservation_id";
+
# Check if chain for reservation has already been created
- if (defined($nat_table_info->{$reservation_id})) {
- notify($ERRORS{'DEBUG'}, 0, "'$reservation_id' chain already exists in nat table on $computer_name");
+ if (defined($nat_table_info->{$chain_name})) {
+ notify($ERRORS{'DEBUG'}, 0, "'$chain_name' chain already exists in nat table on $computer_name");
}
- elsif (!$self->create_chain('nat', $reservation_id)) {
- notify($ERRORS{'WARNING'}, 0, "failed to configure NAT host $computer_name for reservation, failed to add '$reservation_id' chain to nat table");
+ elsif (!$self->create_chain('nat', $chain_name)) {
+ notify($ERRORS{'WARNING'}, 0, "failed to configure NAT host $computer_name for reservation, failed to add '$chain_name' chain to nat table");
return;
}
# Check if rule to jump to reservation's chain already exists in the PREROUTING table
- for my $rule_specification (@{$nat_table_info->{PREROUTING}{rules}}) {
- if ($rule_specification =~ /-j $reservation_id(\s|$)/) {
- notify($ERRORS{'DEBUG'}, 0, "PREROUTING chain in nat table on $computer_name already contains a rule to jump to '$reservation_id' chain: $rule_specification");
+ for my $rule (@{$nat_table_info->{PREROUTING}{rules}}) {
+ if ($rule =~ /-j $chain_name(\s|$)/) {
+ notify($ERRORS{'DEBUG'}, 0, "PREROUTING chain in nat table on $computer_name already contains a rule to jump to '$chain_name' chain: $rule");
return 1;;
}
}
@@ -831,10 +1046,10 @@ sub configure_nat_reservation {
'table' => 'nat',
'chain' => 'PREROUTING',
'parameters' => {
- 'jump' => $reservation_id,
+ 'jump' => $chain_name,
},
})) {
- notify($ERRORS{'WARNING'}, 0, "failed to configure NAT host $computer_name for reservation, failed to create rule in PREROUTING chain in nat table to jump to '$reservation_id' chain");
+ notify($ERRORS{'WARNING'}, 0, "failed to configure NAT host $computer_name for reservation, failed to create rule in PREROUTING chain in nat table to jump to '$chain_name' chain");
return;
}
@@ -858,7 +1073,6 @@ sub add_nat_port_forward {
return 0;
}
- my $reservation_id = $self->data->get_reservation_id();
my $computer_name = $self->data->get_computer_hostname();
my ($protocol, $source_port, $destination_ip_address, $destination_port, $chain_name) = @_;
Modified: vcl/trunk/managementnode/lib/VCL/reserved.pm
URL: http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/reserved.pm?rev=1662080&r1=1662079&r2=1662080&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/reserved.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/reserved.pm Tue Feb 24 18:44:24 2015
@@ -102,6 +102,7 @@ sub process {
my $computer_id = $self->data->get_computer_id();
my $computer_short_name = $self->data->get_computer_short_name();
my $is_parent_reservation = $self->data->is_parent_reservation();
+ my $parent_reservation_id = $self->data->get_parent_reservation_id();
my $server_request_id = $self->data->get_server_request_id();
my $imagemeta_checkuser = $self->data->get_imagemeta_checkuser();
@@ -136,8 +137,8 @@ sub process {
insertloadlog($reservation_id, $computer_id, "noinitialconnection", "user clicked Connect");
delete_computerloadlog_reservation($reservation_id, 'acknowledgetimeout');
- # The frontend should have inserted an 'initialconnecttimeout' computerloadlog entry, retrieve its timestamp
- my $connection_check_start_epoch_seconds = get_reservation_computerloadlog_time($reservation_id, 'initialconnecttimeout');
+ # The frontend should have inserted an 'initialconnecttimeout' computerloadlog entry for the parent reservation, retrieve its timestamp
+ my $connection_check_start_epoch_seconds = get_reservation_computerloadlog_time($parent_reservation_id, 'initialconnecttimeout');
if ($connection_check_start_epoch_seconds) {
notify($ERRORS{'DEBUG'}, 0, "retrieved timestamp of computerloadlog 'initialconnecttimeout' entry inserted by web frontend: $connection_check_start_epoch_seconds");
}
Modified: vcl/trunk/managementnode/lib/VCL/utils.pm
URL: http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/utils.pm?rev=1662080&r1=1662079&r2=1662080&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/utils.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/utils.pm Tue Feb 24 18:44:24 2015
@@ -9264,20 +9264,20 @@ sub is_management_node_process_running {
next;
}
elsif ($pid eq $PID) {
- notify($ERRORS{'DEBUG'}, 0, "ignoring line for the currently running process: $line");
+ #notify($ERRORS{'DEBUG'}, 0, "ignoring line for the currently running process: $line");
next;
}
elsif ($line =~ /grep -P/) {
- notify($ERRORS{'DEBUG'}, 0, "ignoring line containing for this command: $line");
+ #notify($ERRORS{'DEBUG'}, 0, "ignoring line containing for this command: $line");
next;
}
elsif ($line =~ /sh -c/) {
# Ignore lines containing 'sh -c', probably indicating a duplicate process of a command run remotely
- notify($ERRORS{'DEBUG'}, 0, "ignoring containing 'sh -c': $line");
+ #notify($ERRORS{'DEBUG'}, 0, "ignoring containing 'sh -c': $line");
next;
}
else {
- notify($ERRORS{'DEBUG'}, 0, "found matching process: $line");
+ #notify($ERRORS{'DEBUG'}, 0, "found matching process: $line");
$processes_running->{$pid} = $process_name;
}
}