Ad Widget

Collapse

Сравнение двух текстовых элементов данн&

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #16
    Подниму тему.
    Так и не смог понять, как элегантно сравнивать текстовые ЭД.
    У меня есть три (не важно сколько) ЭД, которые возвращают разный текст. Надо сравнивать. Как? <> не работает для текста, diff только для своего элемента, str и regex работают только с шаблоном-константой и туда не вставишь другой ЭД...
    Как сравнить ?

    Comment

    • Kos
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • Aug 2015
      • 3404

      #17
      Таки да, это проблема. Самый безболезненный вариант - это всё же пытаться приводить получаемый текст к числам, которые сравниваются без проблем. Благо теперь при наличии препроцессинга это можно делать без использования внешних скриптов. Например, этот способ будет работать в таких случаях:
      • получаемое текстовое значение может быть одним из заранее известных из некоторого диапазона (скажем, состояние: Online/Offline/Up/Down/Running/etc.). Тогда придумываем каждому состоянию некий числовой эквивалент, в который и переводим через предобработку с использованием регулярных выражений, а через глобальную таблицу маппинга ставим обратное соответствие (число -> текст) для наглядного отображения.
      • приходящий текст имеет значащими только цифры (например, дата/время в некотором формате), тогда незначащие символы (всевозможные разделители - слэши/двоеточия/точки и т.п.) убираем через ту же предобработку с регулярными выражениями. При этом можно заодно переупорядочить (если есть необходимость), чтобы получившиеся числа можно было сравнивать не только на "равно/не равно", но и на "больше/меньше".
      К сожалению, этот вариант не подойдёт в общем случае - например, когда мы заранее не знаем, какой именно текст может прийти и в каком формате он будет.

      Comment

      • Alex_UUU
        Senior Member
        • Dec 2018
        • 541

        #18
        Спасибо, но у меня как раз третий случай.По сути дела ТМ на хостнеймы. Их три, агент.хостнейм, систем.хостнейм и имя узла. Они все могут быть разными. :-)
        ПРидумал еще вариант: сделать еже один ЭД, с system.run и уже на стороне сервера произвести сравнение :-)
        Но это опять гланды автогеном через задницу.

        Comment

        Working...