Сценарий Bash для перезапуска Java-приложения после компиляции Jenkins

Мое решение

Я нашел сценарий, который работает для решения этой проблемы.

sudo usbtop | grep -A 10 "Bus ID 2" | awk '{if ($1 == "Device") sum+=$7} (NR%12==0){avg=sum/12;print $7"\nTotal: "sum "\tAverage: "avg;sum=0;next}'

{if ($1 == "Device") sum+=$7}суммирует строки в столбце x, если значение в столбце y возвращает значение true

(NR%12==0)считает каждые x строк

{avg=sum/12;print $7"\nTotal: "sum "\tAverage: "avg;sum=0;next}{вычисляет среднее значение; печатает содержимое столбца x; распечатывает рассчитанные результаты; сбрасывает итог на 0; и начинает следующую серию вычислений}

Мне не нужна была вся эта информация, так что {"\nTotal: "sum;sum=0;next}мне хватило.

Отправка в виде команды через ssh:

ssh -t domain@hostIP -a "sudo usbtop | grep -A 12 'Bus ID 2'  | awk '{if(\$3>0) sum+=\$7/1000} (NR%10==0){print "'"Total: "'" sum;sum=0;next}'"

где -tоткрывает сеанс терминала и -aизвлекает результаты на вашу машину перед локальным запуском команды (Я не смог найти, как запустить команду удаленно ), обратите внимание, что вам нужно избегайте вложенных кавычек и символов $, поэтому " ' "необходимо для записи итога в виде строки и \$для ссылок на столбцы.

как команда Python с выводом в файл:

output_file = 'text.txt'
command = '''ssh -t domain@hostIP -a "usbtop | grep -A 10 'Bus ID 2'  | awk '{if(\$3>0) sum+=\$7} (NR%10==0){print "'"Total: "'" sum;sum=0;next}'" >>''' + output_file

Вы можете написать sum+=\$7/1000, чтобы преобразовать выходные данные usbtop в мегабайты и так далее.

ПРИМЕЧАНИЕ. :Возможно, вам придется запустить команду через python от имени пользователя root.

0
28.08.2021, 19:43
0 ответов

Теги

Похожие вопросы