.\" .\" *********************************************************************
.\" .\" *                                                                   *
.\" .\" *             Copyright 2020-2022, Intel Corporation                *
.\" .\" *                                                                   *
.\" .\" *                       All Rights Reserved.                        *
.\" .\" *                                                                   *
.\" .\" *********************************************************************

.TH ethfindgood 8 "Intel Corporation" "Copyright(C) 2020\-2022" "EFSFFCLIRG (Man Page)"
.SH NAME
ethfindgood


.PP
Checks for hosts that are able to be pinged, accessed via SSH, and active on the Intel(R) Ethernet Fabric. Produces a list of good hosts meeting all criteria. Typically used to identify good hosts to undergo further testing and benchmarking during initial cluster staging and startup.
.PP
The resulting good file lists each good host exactly once and can be used as input to create \fImpi\(ulhosts\fR files for running mpi\(ulapps and the NIC-SW cable test. The files alive, running, active, good, and bad are created in the selected directory listing hosts passing each criteria. If a plane name is provided, filename will be xxx\(ul<plane>, e.g. good\(ulplane1
.PP
This command automatically generates the file FF\(ulRESULT\(ulDIR/punchlist.csv. This file provides a concise summary of the bad hosts found. This can be imported into Excel directly as a *.csv file. Alternatively, it can be cut/pasted into Excel, and the
\fBData/Text to Columns\fR
toolbar can be used to separate the information into multiple columns at the semicolons.
.PP
A sample generated output is:
.PP

.br
# ethfindgood
.br

3 hosts will be checked
.br

2 hosts are pingable (alive)
.br

2 hosts are ssh\[aq]able (running)
.br

2 total hosts have RDMA active on one or more fabrics (active)
.br

1 hosts are alive, running, active (good)
.br

2 hosts are bad (bad)
.br

Bad hosts have been added to /root/punchlist.csv
.br

# cat /root/punchlist.csv
.br

2015/10/09 14:36:48;phs1fnivd13u07n4;Doesn\[aq]t ping
.br

2015/10/09 14:36:48;phs1fnivd13u07n4;Can\[aq]t ssh
.br

2015/10/09 14:36:48;phs1fnivd13u07n3;No active RDMA port

.br

.PP
For a given run, a line is generated for each failing host. Hosts are reported exactly once for a given run. Therefore, a host that does not ping is NOT listed as can\[aq]t ssh nor No active RDMA port. There may be cases where ports could be active for hosts that do not ping. However, the lack of ping often implies there are other fundamental issues, such as PXE boot or inability to access DNS or DHCP to get proper host name and IP address. Therefore, reporting hosts that do not ping is typically of limited value.
.SH Syntax
ethfindgood [-R|-A] [-d  \fIdir\fR] [-p  \fIplane\fR] [-f  \fIhostfile\fR] [-h \[aq]\fIhosts\fR\[aq]] [-T  \fItimelimit\fR]
.SH Options

.TP 10
--help

Produces full help text.
.TP 10
-R

Skips the running test (SSH). Recommended if password-less SSH is not set up.
.TP 10
-A

Skips the active test. Recommended if Intel(R) Ethernet Fabric Suite software or fabric is not up.
.TP 10
-p \fIplane\fR

Specifies the name of the plane to use.
.TP 10
-d \fIdir\fR

Specifies the directory in which to create alive, active, running, good, and bad files. Default is /etc/eth-tools directory.
.TP 10
-f \fIhostfile\fR

Specifies the file with hosts in cluster. Default is /etc/eth-tools/hosts directory.
.TP 10
-h \fIhosts\fR

Specifies the list of hosts to ping.
.TP 10
-T \fItimelimit\fR

Specifies the time limit in seconds for host to respond to SSH. Default is 20 seconds.

.SH Environment Variables

.PP
The following environment variables are also used by this command:
.TP 10
\fBHOSTS\fR

List of hosts, used if -h option not supplied.

.TP 10
\fBHOSTS\(ulFILE\fR

File containing list of hosts, used in absence of -f and -h.

.TP 10
\fBFF\(ulMAX\(ulPARALLEL\fR

Maximum concurrent operations.

.SH Examples
ethfindgood
.br

ethfindgood -f allhosts
.br

ethfindgood -h \[aq]arwen elrond\[aq]
.br

HOSTS=\[aq]arwen elrond\[aq] ethfindgood
.br

HOSTS\(ulFILE=allhosts ethfindgood
