Это в основном ответ BinaryZebra, измененный для создания файла slurm topology.conf как defined
ibnetdiscover | awk -v FS='[#"]' '
BEGIN{c=0}
$1~/Switch/ {c++; j=0; split($5,arr,"[;:]" ); sw[c,0]=arr[2] }
$1~/\[[0-9]+\]/ && $2~/^H-/ { j++; split($5,arr," " ); sw[c,j]=arr[1] }
END {
# print("final count of switches=" c)
for (i=1; i<=c; i++) {
printf( "SwitchName=s" i, sw[i,0] ) # show switch number.
split("", out , ":" ) # delete array "out".
split("", indices , ":" ) # delete array "indices".
j=0
while (sw[i,++j]) { # for all array elements.
if (out[sw[i,j]]++ < 1) { # Is it a new value?
indices[sw[i,j]]=j # add to array "indices".
}
}
n=asorti(indices) # sort the keys of indices
# printf( "%s ", sw[i,0] )
printf ( " Nodes=" )
for (k=1; k
Если требуется сжатый список хостов, просто измените каждую строку Node = с помощью scontrol show hostlist
. Окончательная модифицированная труба будет выглядеть так:
| awk -F= '{sub(/[[:digit:]]+/, ++i) ; cmd= "scontrol show hostlist " $3 ; cmd | getline line ; printf( "%s=%s=%s\n" , $1, $2, line ) } END{printf( "SwitchName=s%s Switches=s[1-%s]\n", NR+1, NR )}'
При чтении сообщения об ошибке предполагается, что инструмент командной строки ip
не установлен. Попробуйте выполнить эту команду какroot
:
yum install iproute
Необходимо yum install which
поhttp://bugzilla.redhat.com/show_bug.cgi?id=1460457