aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2007-11-20 14:10:09 +0000
committerYang Tse <yangsita@gmail.com>2007-11-20 14:10:09 +0000
commit258c4686b2a2e155bbc26015f9fc6e8821740cc5 (patch)
tree35f2bb688aa9b3fbea75d54e828711146fb6d104
parent600d0b1303a9faf396e1e3ccf255a63cdf135769 (diff)
Improve detection of sshd un/supported options.
Gather additional debug info when the test suite ssh server fails to start.
-rw-r--r--tests/sshserver.pl27
1 files changed, 25 insertions, 2 deletions
diff --git a/tests/sshserver.pl b/tests/sshserver.pl
index 563e9de72..695b3728d 100644
--- a/tests/sshserver.pl
+++ b/tests/sshserver.pl
@@ -61,6 +61,19 @@ sub searchpath {
}
}
+# Display contents of the given file.
+sub displayfile {
+ my ($file) = @_;
+ print "=== Start of file $file\n";
+ if(open(SINGLE, "<$file")) {
+ while(my $string = <SINGLE>) {
+ print "$string";
+ }
+ close(SINGLE);
+ }
+ print "=== End of file $file\n";
+}
+
# Parse options
do {
if($ARGV[0] eq "-v") {
@@ -170,7 +183,8 @@ close CONF;
# Check here for possible unsupported options, avoiding its use in sshd.
sub sshd_supports_opt($) {
my ($option) = @_;
- my $err = grep /Unsupported .* $option/, qx($sshd -t -f $conffile -o $option=no 2>&1);
+ my $err = grep /((Unsupported)|(Bad configuration)|(Deprecated)) option.*$option/,
+ qx($sshd -t -f $conffile -o $option=no 2>&1);
return !$err;
}
@@ -278,9 +292,13 @@ EOFSSH
close SSHFILE || die "Could not close $conffile_ssh";
-if (system "$sshd -t -q -f $conffile") {
+# Verify that sshd supports our configuration file
+if (system "$sshd -t -f $conffile > log/sshd.log 2>&1") {
# This is likely due to missing support for UsePam
print "$sshd is too old and is not supported\n";
+ displayfile("log/sshd.log");
+ displayfile("$conffile");
+ unlink "log/sshd.log";
unlink $conffile;
exit 1;
}
@@ -291,6 +309,11 @@ $rc >>= 8;
if($rc && $verbose) {
print STDERR "$sshd exited with $rc!\n";
}
+if($rc) {
+ print "$sshd exited with $rc!\n";
+ displayfile("log/sshd.log");
+ displayfile("$conffile");
+}
unlink $conffile;