Вам нужно только запустить команду free
на серверах:
selectNode () {
mem1=$( ssh "$1" free | awk '/^Mem:/ { print int(100*$3/$2) }' )
mem2=$( ssh "$2" free | awk '/^Mem:/ { print int(100*$3/$2) }' )
if [ "$mem1" -lt "$mem2" ]; then
printf '%s\n' "$1"
else
printf '%s\n' "$2"
fi
}
Здесь на серверах выполняется только команда free
, в то время как awk
выполняется локально. Кроме того, мы позволяем awk
преобразовать результат вычисления в целое число, чтобы мы могли использовать его позже с тестом -lt
.
Вы могли бы использовать это как
server=$( selectNode "user@server1" "user@server2" )
В качестве альтернативы:
selectNode () {
mem1=$( ssh "$1" free | awk '/^Mem:/ { print int(100*$3/$2) }' )
mem2=$( ssh "$2" free | awk '/^Mem:/ { print int(100*$3/$2) }' )
[ "$mem1" -lt "$mem2" ]
}
, а затем
if selectNode "user@server1" "user@server2"; then
server="user@server1"
else
server="user@server2"
fi
В Catalina предусмотрены отдельные элементы управления для ограничения доступа к рабочему столу, документам и загрузкам.