Как получить память и использование процессора на удаленном сервере? - PullRequest
0 голосов
/ 25 марта 2020

Мое намерение - войти на несколько серверов и распечатать их память и использование процессора один за другим. Я написал следующие сценарии

START=1 
END=5
for i in {$START..$END}
do
    echo "myserver$i"
    ssh myserver$i
    free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
    top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}'
    logout
done

Но это не работает. Кто может дать решение этого? Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 25 марта 2020

Внимательно посмотрите на свой код. После команды S SH вы находитесь на удаленном сервере в оболочке S SH. И, очевидно, ваш сценарий теперь хочет, чтобы вы общались (через клавиатуру) с удаленным сервером. Когда он закончится, например, если вы нажмете ctrl- c или ctrl-d, то на вашем локальном компьютере будут запущены следующие команды, такие как "free" и "top".

Вы должны указать s sh с неким аргументом "-exe c", что он должен выполняться free и top на удаленном сервере: D

Я уверен, что вы сами разберетесь, как это сделать, получайте удовольствие.

0 голосов
/ 28 марта 2020

После поиска в Интернете и объединения нескольких ответов на другие вопросы по стеку. Я получаю следующее решение.

Решение

На локальном компьютере может потребоваться следующий скрипт bash с именем, скажем, usage_ssh

START=1
END=3
date
for i in $(seq $START $END)
do
        printf '=%.0s' {1..50};
        printf '\n'
        echo myservery$i
        ssh myserver$i -o LogLevel=QUIET -t "~/bin/usage"
done
printf '=%.0s' {1..50};
printf '\n'
printf 'CPU Load: \n'
printf 'First Field\tprocesses per processor\n'
printf 'Second Filed\tidling percentage in last 5 minutes\n'
printf '\n'
printf '\n'

на удаленном сервере. , у вас должен быть следующий bash скрипт с именем usage. Этот скрипт должен находиться в ~/bin.

free -m | awk 'NR==2{printf "Memory Usage\t%s/%sMB\t\t%.2f%\n", $3, $2, $3/$2*100}';
top -n 1 | grep load | awk '{printf "CPU Load\t%.2f\t\t\t%.2f\n", $(NF-2), $(NF-1)}';

Объяснение

Идея состоит в том, что вы вызовете использование ssh -t <your command> для запуска исполняемого файла на вашем удаленном файле и получения вывода на экран вашего локального компьютера.

Выход

Sat Mar 28 10:32:34 CDT 2020
==================================================
myserver1
Memory Usage    47418/48254MB       98.27%
CPU Load        0.01                0.02
==================================================
myserver2
Memory Usage    47421/48254MB       98.27%
CPU Load        0.01                0.02
==================================================
myserver3
Memory Usage    4300/84541MB        5.09%
CPU Load        0.02                0.02
==================================================
CPU Load: 
First Field processes per processor
Second Filed    idling percentage in last 5 minutes
0 голосов
/ 25 марта 2020

Существует одна полезная команда для использования CPU / mem - top. Чтобы получить результат, запустите эту команду. Загрузка процессора - top -b -n 1 | grep Cpu Использование памяти - top -b -n 1 | grep 'KiB Mem'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...