blob: 7eca7938ddd6cc1c2f1b23d2309430c343b86404 [file] [log] [blame]
#!/usr/bin/perl
# @@@ START COPYRIGHT @@@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# @@@ END COPYRIGHT @@@
use strict;
use warnings;
use Getopt::Long;
my $help = 0;
my $res;
my $verbose = 0;
$res = GetOptions(
'h' => \$help,
'v' => \$verbose,
);
exit(1) if (!$res);
if ($help) {
printf "usage: sqid [-h] [-v]\n";
exit(0);
}
my $sq_pdsh = defined $ENV{'SQ_PDSH'} ? $ENV{'SQ_PDSH'} : '';
my $traf_home = defined $ENV{'TRAF_HOME'} ? $ENV{'TRAF_HOME'} : '';
my $java_home = defined $ENV{'JAVA_HOME'} ? $ENV{'JAVA_HOME'} : '';
my $host;
gethost();
if ($verbose) {
printf "v: cmd:whoami\n";
}
my $w = `whoami`;
$w =~ s/\s+$//;
my $lr = `uname -r`;
$lr =~ s/\s+$//;
my $rhrel = `cat /etc/redhat-release`;
my $rr = "?.?";
if ($rhrel =~ /^.*release ([0-9][0-9]*)\.([0-9][0-9]*)/) {
$rr=$1 . "." . $2
}
print "TRAF_HOME=$traf_home\n";
print "who\@host=$w\@$host\n";
print "JAVA_HOME=$java_home\n";
print "linux=$lr\n";
print "redhat=$rr\n";
# can't do much if this env variables is not setup
if (!defined $ENV{'TRAF_HOME'}) {
die "TRAF_HOME is not set!";
}
my $sq_mbtype = defined $ENV{'SQ_MBTYPE'} ? $ENV{'SQ_MBTYPE'} : '?';
my $dir = "$traf_home/export/lib" . $sq_mbtype;
chdir($dir) or die "can't chdir to $dir $!";
my $file = "$dir'/libsbms.so'";
version($file);
#
# gethost
# default to hostname
# search /etc/pdsh/machines | /opt/hptc/pdsh/nodes for non 'n[0-9][0-9]*'
#
sub gethost {
if ($verbose) {
printf "v: cmd:hostname\n";
}
$host = `hostname`;
$host =~ s/\s+$//;
if (-x ($sq_pdsh)) {
# find head node
if ($verbose) {
printf "v: cmd:cat /etc/pdsh/machines\n";
}
my $mach;
if (-r "/etc/pdsh/machines") {
$mach = `cat /etc/pdsh/machines`;
} elsif (-r "/etc/machines") {
$mach = `cat /etc/machines`;
} else {
$mach = `cat /opt/hptc/pdsh/nodes`;
}
my @nstrs = split(/\n/, $mach);
my $nstr;
foreach $nstr (@nstrs) {
my $hno = $nstr;
$hno =~ s/\s+$//;
if ($verbose) {
print "v: /etc/pdsh/machines, rec=$hno\n";
}
if ($hno !~ /^n[0-9][0-9]*/) {
$host = $hno;
last;
}
}
}
if ($verbose) {
print "v: *host=$host\n";
}
$host =~ s/\s+$//;
}
sub version {
my ($elf) = @_;
if ($verbose) {
printf "v: cmd:nm $elf\n";
}
my $nm = `nm $elf | grep " VERS_"`;
my @strs = split(/\n/, $nm);
my $str;
foreach $str (@strs) {
my $ver = $str;
$ver =~ s/^.*?VERS_//;
$ver =~ s/_sl_/\//g;
$ver =~ s/_dt_/\./g;
$ver =~ s/_dh_/-/g;
if ($ver =~ /([a-zA-Z0-9_]*)_CV(\d*)_(\d*)_(\d*)_PV(\d*)_(\d*)_(\d*)_BV(\w*)_BR([\w\-\.\/]*)_DT(\w*)_SV(.*)/) {
print "Release $5.$6.$7 (Build $8 [$11], branch $9, date $10)\n";
}
}
}