mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-12-12 03:59:59 +00:00
Use the existence of the presumed log as a stronger indication of the use of confluent. Continue to shy away from slowing things down by getting the site table, to avoid the slow check.
125 lines
2.6 KiB
Perl
Executable File
125 lines
2.6 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
#!/usr/bin/env perl
|
|
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
|
BEGIN
|
|
{
|
|
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
|
|
}
|
|
use lib "$::XCATROOT/lib/perl";
|
|
|
|
use strict;
|
|
use xCAT::Table;
|
|
use xCAT::Utils;
|
|
use xCAT::TableUtils;
|
|
use xCAT::NetworkUtils;
|
|
use xCAT::MsgUtils;
|
|
use Getopt::Long;
|
|
|
|
my $usage_string =
|
|
"Usage:
|
|
replaycons node [bps] [tail]
|
|
replaycons -h|--help
|
|
replaycons -v|--version
|
|
bps Specifies the display rate.
|
|
The default is 19200.
|
|
tail Specifies the number of bytes to be displayed.
|
|
The default displays all.
|
|
-h|--help Display this usage statement.
|
|
-v|--version Display the version number.";
|
|
|
|
my $version_string = "Version 2.0";
|
|
|
|
$Getopt::Long::ignorecase = 0;
|
|
if (!GetOptions(
|
|
'h|help' => \$::HELP,
|
|
'v|version' => \$::VERSION)) {
|
|
exit(1);
|
|
}
|
|
if ($::HELP) {
|
|
print "$usage_string\n";
|
|
exit(0);
|
|
}
|
|
if ($::VERSION) {
|
|
print "$version_string\n";
|
|
exit(0);
|
|
}
|
|
|
|
if (@ARGV < 1) {
|
|
print "Please specify a node name.\n";
|
|
exit(1);
|
|
}
|
|
|
|
my $node = @ARGV[0];
|
|
my $bps = 19200;
|
|
if (@ARGV > 1) {
|
|
$bps = @ARGV[1];
|
|
if ($bps == 0) { $bps = 19200; }
|
|
}
|
|
my $tail = 0;
|
|
if (@ARGV > 2) { $tail = @ARGV[2]; }
|
|
print "node=$node, bps=$bps, tail=$tail\n";
|
|
|
|
# get the conserver for the node
|
|
my $conserver;
|
|
my $hmtab = xCAT::Table->new('nodehm');
|
|
if ($hmtab) {
|
|
my $ent = $hmtab->getNodeAttribs($node, [ 'node', 'conserver' ]);
|
|
if ($ent->{conserver}) { $conserver = $ent->{conserver}; }
|
|
} else {
|
|
print "nodehm table cannot be opened\n";
|
|
exit(1);
|
|
}
|
|
my $file = "/var/log/consoles/$node";
|
|
|
|
#use confluent if it is there
|
|
if (((-x "/opt/confluent/bin/confetty") || (-x "/usr/bin/confetty")) && -f "/var/log/confluent/consoles/$node") {
|
|
$file = "/var/log/confluent/consoles/$node";
|
|
}
|
|
|
|
#print "file=$file\n";
|
|
|
|
#if has conserver, goto conserver the execute replaycons command
|
|
my @hostinfo = xCAT::NetworkUtils->determinehostname();
|
|
my %iphash = ();
|
|
foreach (@hostinfo) { $iphash{$_} = 1; }
|
|
if (($conserver) && ($iphash{$conserver} != 1)) {
|
|
system("ssh -o BatchMode=yes $conserver $::XCATROOT/bin/replaycons $node $bps $tail 2>&1");
|
|
exit(0);
|
|
}
|
|
|
|
|
|
my $cps = $bps / 8;
|
|
my $ms = 1 / $cps;
|
|
my $msc = 0;
|
|
my $debug = 0;
|
|
my @c;
|
|
|
|
select(STDOUT);
|
|
$| = 1;
|
|
|
|
if (!open(FILE, $file)) {
|
|
print "replaycons: cannot open $file\n";
|
|
exit(1);
|
|
}
|
|
|
|
if ($tail > 0) {
|
|
seek(FILE, -$tail, 2);
|
|
}
|
|
|
|
while (<FILE>) {
|
|
@c = split(//);
|
|
foreach (@c) {
|
|
print $_;
|
|
$msc += $ms;
|
|
if ($msc > .1) {
|
|
select(undef, undef, undef, $msc);
|
|
$msc = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
close(FILE);
|
|
|
|
exit(0);
|
|
|