Страница 1 из 1

IP v4 и Автоматизация действий

Добавлено: 24 апр 2023, 12:44
Alex.Zin
Доброго дня.
Есть нужда смены IP при действии автоматизации, но автоматизация в отрез не хочет видеть поле Новый IP(если указывать поле как "Адрес IPv4"). При этом можно вроде как использовать поле с динамической маской ввода, но его перенос в поле IP дает не тот результат, здесь на форуме нашел что ip в базе своеобразно хранится, но пока не могу отдуплить как его засунуть правильно из поля с динамической маской при выполнении автоматизации.
Если надо могу подробнее объяснить где, что и как устроено.

Re: IP v4 и Автоматизация действий

Добавлено: 24 апр 2023, 12:50
Alex.Zin
Поле с динамической маской имеет маску:
9{1,3}.9{1,3}.9{1,3}.9{1,3}
Пробовал сделать дополнительно ограничения чтоб числа были в пределах 1-256 но чет не хочет он это воспринимать.
На сейчас остался вариант бить IP на 4 разных поля и дальше собирать в ip с манипуляциями и вычислениями как предложено в другой теме:
X = Y1 * 256 ^ 0 + Y2 * 256 ^ 1 + Y3 * 256 ^ 2 + Y4 * 256 ^3 (где ip адрес имеет формат Y4.Y3.Y2.Y1)
, но все равно вопрос псле этих манипуляция поле Адрес IPv4 примет ли правильное значение?

Re: IP v4 и Автоматизация действий

Добавлено: 24 апр 2023, 14:07
Alex.Zin
Пока вышел вот так, но не очень красиво...
В автоматизации добавил PHP код:
if([52]>0)
{ list($ip1, $ip2, $ip3, $ip4) = explode(".", [52]);
$a0 = $ip1 * 256 ** 3;
$a1 = $ip2 * 256 ** 2;
$a2 = $ip3 * 256 ** 1;
$a3 = $ip4 * 256 ** 0;
$aall = $a3 + $a2 + $a1 + $a0;
db_query("update app_entity_53 set field_26={$aall} where id={$item_id}");
db_query("update app_entity_53 set field_52='' where id={$item_id}");
} else
{db_query("update app_entity_53 set field_26='' where id={$item_id}");}

По итогам как это работает, в новой строке вида Поле с динамической маской ввода (9{1,3}.9{1,3}.9{1,3}.9{1,3}), вводим новый IP [52] (проверки на валидность пока нет, но потом докручу) PHP разбивает эту строку и производит вычисления, далее все это складывает и кладет данные в поле Адрес IPv4 [field_26], очищает поле новый IP [52]. Если новый IP [52] не был введен то просто сбрасывает поле со старым IP [field_26].