|
1 | 1 | #!/usr/bin/perl -w
|
2 | 2 | # vim:tw=100 sw=2 expandtab ft=perl
|
| 3 | +use POSIX qw( ttyname ); |
| 4 | +use Socket qw( getaddrinfo getnameinfo ); |
| 5 | + |
3 | 6 | =head1 NAME
|
4 | 7 |
|
5 | 8 | 999-complete
|
@@ -54,19 +57,20 @@ if (!$safe_mode) {
|
54 | 57 | my $fn = c("$hostname/rollout/logfile");
|
55 | 58 | if ($fn && (my $fh = new IO::File ">>$fn"))
|
56 | 59 | {
|
57 |
| - my($host, $port) = ($ENV{SSH_CLIENT} || "console", ""); |
58 |
| - if ($host =~ /(?:::ffff:)?(\d+\.\d+\.\d+\.\d+)\s+(\d+)\s+\d+/) { |
59 |
| - $host = $1 || "127.0.0.1"; |
60 |
| - $port = $2 || 0; |
61 |
| - my $x = `host $host` || ""; |
62 |
| - $host = $1 if $x =~ /domain name pointer (.*)\./; |
| 60 | + my($src, $srcport, $sshport) = split(/\s/, $ENV{SSH_CLIENT}) if $ENV{SSH_CLIENT}; |
| 61 | + $src ||= POSIX::ttyname(1); |
| 62 | + # $src will be blank if coming from cron. |
| 63 | + $src ||= "cron"; |
| 64 | + if ($src =~ /(?:::ffff:)?(\d+\.\d+\.\d+\.\d+)\s+(\d+)\s+\d+/) { |
| 65 | + my ($error, @src_info) = getaddrinfo($src, 0); |
| 66 | + ($error, $src) = getnameinfo($src_info[0]->{addr}); |
63 | 67 | }
|
64 | 68 |
|
65 | 69 | print $fh "-------------------------------------------------\n";
|
66 | 70 | print $fh "START: ". localtime($start_time). "\n";
|
67 | 71 | print $fh "DURATION: $duration\n";
|
68 | 72 | print $fh "COMMENT: $rollout_comment\n";
|
69 |
| - print $fh "FROM: $host $port\n"; |
| 73 | + print $fh "FROM: $src\n"; |
70 | 74 | print $fh "HOSTNAME: $hostname\n";
|
71 | 75 | print $fh "\n$log\n";
|
72 | 76 | print $fh "\n";
|
|
0 commit comments