Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Скрипт на bash  (Прочитано 352 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dark Smoke

  • Автор темы
  • Активист
  • *
  • Сообщений: 307
    • Просмотр профиля
    • Абонентское обслуживание и ремонт компьютеров в Днепропетровске
Скрипт на bash
« : 21 Ноябрь 2018, 22:30:59 »
Добрый день
Помогите, пожалуйста, разобраться со скриптом. И главное объяснить почему так и где я косячу.
есть файл .app_name
# AppName SName Setcookie
calculatorplus calculator sheiChishoquiekkdkjhGFjllFKg
..... тут много строк
есть файл .item
# ItemName | Erl param
memory_total | erlang memory [total]
memory_processes | erlang memory [processes]
memory_processes_used | erlang memory [processes_used]
memory_processes_used | erlang memory [system]
И сам скрипт
#!/usr/bin/env bash
ERL_CALL="/DATA/erl/19.2/lib/erl_interface-3.9.2/bin/erl_call"
FILE="/tmp/erlang_zabbix.txt"

cd $(dirname "$0")

rm -rf $FILE
touch $FILE

timestamp=$(date +%s)

APP_NAME=$(cat ./.app_name  | grep -v "#")
ITEM_NAME=$(cat ./.item | grep -v "#")

echo $ITEM_NAME

for app_name in $(echo $APP_NAME | cut -d' ' -f1); do
    for item in $ITEM_NAME; do
        echo "- $(echo "$item" | cut -d'|' -f1) $timestamp"
    done
done

На выходе хочу получить файл
- memory_total timestamp 15
- memory_processes timestamp 35 <--- Эту цифру получили выполнив команду erl_call

Как это получить:
memory_total взяли из файла .item

Потом надо выполнить комманду:
$ERL_CALL -sname calculator -setcookie sheiChishoquiekkdkjhGFjllFKg -a "erlang memory [total]"calculator - взят с файла .app_name второй столбец
setcookie - взят с файла .app_name третий столбец
erlang memory [total] - взят с файла .item третий столбец
Выполнив эту команду получаем цифру которую записываем в файл

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6014
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт на bash
« Ответ #1 : 22 Ноябрь 2018, 12:23:00 »
echo $APP_NAME | cut -d' ' -f1
выдаст 1 элемент из первой строки, т.к. строки будут преобразованы в 1 строку.
Чем разбирать Ваш код поясните что именно Вы делаете и зачем.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6014
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт на bash
« Ответ #2 : 22 Ноябрь 2018, 12:38:30 »
Код: Bash
  1. ...
  2. while read appname sname scookie ; do
  3.     while IFS='|' read itemname erl_param ; do
  4.         printf "- $itemname $timestamp %d\n" "$($ERL_CALL -sname "$sname" -setcookie "$scookie" -a "$erl_param")"
  5.     done < <(grep -v "#" ./.item)
  6. done < <(grep -v "#" ./.app_name)
Хотя если ./.item небольшой то его надо считать 1 раз в массив - будет намного быстрее
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Dark Smoke

  • Автор темы
  • Активист
  • *
  • Сообщений: 307
    • Просмотр профиля
    • Абонентское обслуживание и ремонт компьютеров в Днепропетровске
Re: Скрипт на bash
« Ответ #3 : 03 Декабрь 2018, 19:15:28 »
Спасибо большое, то что надо
« Последнее редактирование: 03 Декабрь 2018, 22:41:37 от Azure »

 

Страница сгенерирована за 0.106 секунд. Запросов: 22.