All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: "John Warthog9 Hawley" <warthog9@kernel.org>,
	Scott Wood <swood@redhat.com>,
	Tim Tianyang Chen <tianyang.chen@oracle.com>
Subject: [for-next][PATCH 19/23] ktest.pl: Add MAIL_PATH option to define where to find the mailer
Date: Sun, 08 Apr 2018 16:17:27 -0400	[thread overview]
Message-ID: <20180408201836.731215096@goodmis.org> (raw)
In-Reply-To: 20180408201708.346970379@goodmis.org

[-- Attachment #1: 0019-ktest.pl-Add-MAIL_PATH-option-to-define-where-to-fin.patch --]
[-- Type: text/plain, Size: 3534 bytes --]

From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>

The option MAIL_PATH lets the user decide how to find the mailer they are
using. For example, sendmail is usually located in /usr/sbin but is not
always in the path of non admin users. Have ktest look through the user's
PATH environment variable (adding /usr/sbin) as well, but if that's not good
enough, allow the user to define where to find the mailer.

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>

squash to mail exec

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
 tools/testing/ktest/ktest.pl    | 36 +++++++++++++++++++++++++++++++-----
 tools/testing/ktest/sample.conf |  4 ++++
 2 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index 07d0a47816e4..637545bd9e98 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -23,7 +23,7 @@ my %evals;
 
 #default opts
 my %default = (
-    "MAILER"				=> "sendmail",  # default mailer
+    "MAILER"			=> "sendmail",  # default mailer
     "EMAIL_ON_ERROR"		=> 1,
     "EMAIL_WHEN_FINISHED"	=> 1,
     "EMAIL_WHEN_CANCELED"	=> 0,
@@ -218,6 +218,7 @@ my $dirname = $FindBin::Bin;
 
 my $mailto;
 my $mailer;
+my $mail_path;
 my $email_on_error;
 my $email_when_finished;
 my $email_when_started;
@@ -250,8 +251,9 @@ my $no_reboot = 1;
 my $reboot_success = 0;
 
 my %option_map = (
-    "MAILTO"				=> \$mailto,
-    "MAILER"				=> \$mailer,
+    "MAILTO"			=> \$mailto,
+    "MAILER"			=> \$mailer,
+    "MAIL_PATH"			=> \$mail_path,
     "EMAIL_ON_ERROR"		=> \$email_on_error,
     "EMAIL_WHEN_FINISHED"	=> \$email_when_finished,
     "EMAIL_WHEN_STARTED"	=> \$email_when_started,
@@ -4126,12 +4128,29 @@ sub set_test_option {
 
 sub _mailx_send {
     my ($subject, $message) = @_;
-    system("$mailer -s \'$subject\' $mailto <<< \'$message\'");
+    system("$mail_path/$mailer -s \'$subject\' $mailto <<< \'$message\'");
 }
 
 sub _sendmail_send {
     my ($subject, $message) = @_;
-    system("echo -e \"Subject: $subject\n\n$message\" | sendmail -t $mailto");
+    system("echo -e \"Subject: $subject\n\n$message\" | $mail_path/sendmail -t $mailto");
+}
+
+sub find_mailer {
+    my ($mailer) = @_;
+
+    my @paths = split /:/, $ENV{PATH};
+
+    # sendmail is usually in /usr/sbin
+    $paths[$#paths + 1] = "/usr/sbin";
+
+    foreach my $path (@paths) {
+	if (-x "$path/$mailer") {
+	    return $path;
+	}
+    }
+
+    return undef;
 }
 
 sub send_email {
@@ -4140,6 +4159,13 @@ sub send_email {
 	    doprint "No email sent: email or mailer not specified in config.\n";
 	    return;
 	}
+	if (!defined($mail_path)) {
+	    # find the mailer
+	    $mail_path = find_mailer $mailer;
+	    if (!defined($mail_path)) {
+		die "\nCan not find $mailer in PATH\n";
+	    }
+	}
         if ($mailer eq "mail" || $mailer eq "mailx"){ _mailx_send(@_);}
         elsif ($mailer eq "sendmail" ) { _sendmail_send(@_);}
         else { doprint "\nYour mailer: $mailer is not supported.\n" }
diff --git a/tools/testing/ktest/sample.conf b/tools/testing/ktest/sample.conf
index d1a2626aaa0a..86e7cffc45c0 100644
--- a/tools/testing/ktest/sample.conf
+++ b/tools/testing/ktest/sample.conf
@@ -411,6 +411,10 @@
 # (default sendmail)
 #MAILER = sendmail
 #
+# The executable to run
+# (default: for sendmail "/usr/sbin/sendmail", otherwise equals ${MAILER})
+#MAIL_EXEC = /usr/sbin/sendmail
+#
 # Errors are defined as those would terminate the script
 # (default 1)
 #EMAIL_ON_ERROR = 1
-- 
2.16.3

  parent reply	other threads:[~2018-04-08 20:20 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-08 20:17 [for-next][PATCH 00/23] ktest: Updates for 4.17 Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 01/23] ktest: Wait for console process to exit Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 02/23] ktest: Add CONNECT_TIMEOUT to change the connection timeout time Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 03/23] ktest: Clarify config file usage Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 04/23] ktest: Comment about other names than just ktest.conf Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 05/23] ktest: Set buildonly=1 for CONFIG_BISECT_TYPE=build Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 06/23] ktest: Set do_not_reboot=y " Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 07/23] ktest: Add standalone config-bisect.pl program Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 08/23] ktest: Use config-bisect.pl in ktest.pl Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 09/23] ktest.pl: Allow for the config-bisect.pl output to display to console Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 10/23] ktest.pl: Use diffconfig if available for failed config bisects Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 11/23] ktest.pl: Have ktest.pl pass -r to config-bisect.pl to reset bisect Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 12/23] ktest.pl: Make finding config-bisect.pl dynamic Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 13/23] ktest.pl: Detect if a config-bisect was interrupted Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 14/23] Ktest: Add email support Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 15/23] Ktest: Add SigInt handling Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 16/23] Ktest: Use dodie for critical falures Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 17/23] Ktest: add email options to sample.config Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 18/23] ktest.pl: No need to print no mailer is specified when mailto is not Steven Rostedt
2018-04-08 20:17 ` Steven Rostedt [this message]
2018-04-08 20:17 ` [for-next][PATCH 20/23] ktest.pl: Kill test if mailer is not supported Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 21/23] ktest.pl: Allow dodie be recursive Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 22/23] ktest.pl: Use run_command to execute sending mail Steven Rostedt
2018-04-08 20:17 ` [for-next][PATCH 23/23] ktest.pl: Add MAIL_COMMAND option to define how to send email Steven Rostedt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180408201836.731215096@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=swood@redhat.com \
    --cc=tianyang.chen@oracle.com \
    --cc=warthog9@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.