diff options
author | Yang Tse <yangsita@gmail.com> | 2007-11-20 14:10:09 +0000 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2007-11-20 14:10:09 +0000 |
commit | 258c4686b2a2e155bbc26015f9fc6e8821740cc5 (patch) | |
tree | 35f2bb688aa9b3fbea75d54e828711146fb6d104 /tests | |
parent | 600d0b1303a9faf396e1e3ccf255a63cdf135769 (diff) |
Improve detection of sshd un/supported options.
Gather additional debug info when the test suite ssh server fails to start.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/sshserver.pl | 27 |
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; |