Некоторые картинки не загружаются из РФ и РК, используйте VPN.

среда, 30 ноября 2022 г.

Сказать что машинка здесь и была, а потом прикинуться раненным оленем???

Не знаю почему, если бы я оказался в такой ситуации, то сразу бы задался вопросом зачем весь этот фарс???

Автор, слабенько

Напомнило мне два момента из жизни, когда сначала взрослый человек, а потом и ребенок попытались манипулировать мной методами, которые я использовал в детстве. Это выглядит так смешно...

вторник, 29 ноября 2022 г.

Mikrotik Типа Jump server

 Для доступа к конечному оборудованию (сервер ssh/rdp/https, сетевое оборудование и т.д. )использую как VPN так и белые списки (iptables and etc). Т.к. гарантировать работу сразу нескольких туннелей представляется сложным, я вынужден, в некоторых случаях (выход с неразрешенного ip), подключаться к конечной точке через промежуточную, подключенную через VPN. Порой хоуп получается тройной или даже четверной вложенности. По сути это получается что-то типа ssh-jump-server. Это очень неудобно для вариантов RDP или же банального веб интерфейса. 

Последние два месяца я нахожусь за пределами физического расположения разрешенных IP адресов, и т.к. основной IP у меня белый динамический, я вынужден прописывать по новой каждый раз. Это противоречит цели белых списков, т.к. мы не знаем кому потом будет принадлежать этот ip, так еще и вечные трудозатраты на настройку.

Мне тут предложили использовать SSO и keykloak, но мне показалось что это не то что надо, плюс очень громоздко.

Картины: Анри Эжен Огюстен Ле Сиданэ

 



воскресенье, 27 ноября 2022 г.

Zabbix как мы заббикс переодевали

Неожиданно захотелось воспользоваться новым функционалом Zabbix, но как выяснилось обновить 4.4 до 6.2 не так просто. Для начала надо обновить операционную систему (у нас Ubuntu 16.04LTS), потом обновить сервер Zabbix. Попытка сделать это наскоком 16.04 = > 22.04 и 4.4 = > 6.2 провалилась и мы потеряли на этом около 7 часов. На самом деле это была вторая попытка, первая провалилась на этапе обновления операционной системы...

Но сразу спойлер - не пытайтесь обновлять по описанному ниже способу, потому что обновление провалилось. Я оставляю эту запись по двум причинам:

  1. кладезь ошибок и решений
  2. потрачено очень много времени на данную операцию, суммарно вышло более 4х суток, плюс фиксация здесь

 За 6000 тенге (меньше 1000 рублей) мне поменяли колеса (с установкой резины на диски). В Питере с меня за это брали от 1500 и выше. 

Кто-то как-то сказал, что нормальный объем багажника должен вмещать в себя комплект резины для этой машины

Находясь посреди города, не самого чистого, скованные наручниками женщина полицейский и джазовый музыкант не смогли снять наручники?, нет, я не говорю что у нее должен быть ключ с собой, но сам механизм наручников не так сложен и вскрывается куском проволоки или чего-то похожего


И второй момент - болгаркой разрезать цепь наручников????, да с этой цепью справятся бокорезы!, уж не говоря о болторезе.


Дальше придирка к переводу, суффикс "ш"/"их" (докторша, врачиха, кассирша и пр) в современном значении женщина указанной профессии, но оно прямо смердит уничижительной формой, принижая представителя профессии до третьесортного разряда! Если исходить из того, что запись была подтверждена по почте, то отношения между врачом и пациентом не холодные, а значит применение "врачиха" неприемлемо.

Гийом Мюссо Сентрал парк

Это попытка реабилитировать автора после провала с "Девушка из Бруклина", тем более, что я уже давно в план поставил 4 произведения данного автора...

суббота, 26 ноября 2022 г.

Оладьи из кабачков

 

"Как Анна попала на склад?", это же в глаза бросается. Ее туда привез Марк, внимание вопрос - почему Марк, как бывший следователь, не пошел выяснять кто, как и зачем нашел Анну?

Собственно, как по мне, не очень удачная сказка...

Быть может это наказание за то, что я не сторонник прочтения краткого описания книги...

Владелец крови в комаре был занесен в базу в 2002 году, почему прогон по базе в 2005 не выявил ничего?

пятница, 25 ноября 2022 г.

 Понятно для чего скрытие того, что ты жертва...

 Мда, водить мы не умеем, но машину с места сдвинули, ладно, но как, черт побери, она включила задний ход!?!??

Это напоминает мою жалкую попытку написать что то типа того же


Сегодня махнул до Каракалпакстана с визарана целью (504 км туда и 504 км обратно). Я даже встал в 5.20, и выехал в 6.09

Выехал я с кабелем USB-C to USB-C для телефона, телефон заряжен на половину, и тут я понимаю, что воткнуть зарядку некуда! А телефон жрет как не в себя. Пришлось отключить все лишнее, потом аудиокнигу, потом и вовсе все отключить. На первой и второй заправке я забыл купить кабель. Целый час ехал в тишине без навигатора. И вот спустя 400 км я купил таки кабель, но до границы 90 км и телефон успел зарядится только до 20%. Останавливался (кроме заправок) один раз - 25 минут спал и снова в путь.


Вид не меняется



А вот холмик напомнил мне узбекскую халву

Пограничников забавило мое имя, из 6 человек четверо или пятеро переспрашивали и смаковали его. Без втыкания в телефон было сложновато. В общем прошел без проблем, правда дистанция это не про Казахстан или Узбекистан!

На территории Каракалпакстана решил перекусить, ибо уже 10 часов без еды. Зашел в ближайшее кафе и за 2600 тенге мне дали тушеную говядину с половинкой лука репчатого, чаем и хлебом. мясо пересолено, но обожрался еще на 10 часов. 

Обратно проехал без остановок на сон, чет не клонило. Зато водители бесили страшно. Я еду 70 (по спидометру, факт около 65), потому что ограничение 70, какой-то чудак на букву м прижимается, моргает фарами и под знак "обгон запрещен" обгоняет! Тут заканчивается ограничение скорости и запрет обгона, а он все равно тащится 75! Я смотрю воткнуть запрещенную оптику (в РФ такие запрещены), прижаться, слепить и моргать (читай - добивать) вместо обгона с поворотником и дистанцией, тут в порядке вещей. Я еще на выезде из города отметил одного чудака, который прижался и требовал его пропустить, чтобы через 300 метров повернуть направо. 

Прибыл в 22.55

У автора явно проблемы с нитью

Почему Марк и Рафаэль не задались вопросом - как Анна попала на этот склад? Если бы человек имел ключи, он бы не выламывал дверь напролом.

Если бы проблема была только в этом архитекторе, то какой смысл скрываться? Может все таки архитектор был чей то марионеткой, которому заказывали убирать неугодных отпрысков?

Почему все это всплыло спустя столько времени?

Почему Анна пыталась скрыться, она что то знала!

  Опять детектив!

Ох, как интересно, а можно мне тоже плинтус, за которым можно спрятать почти поллимона евро средними купюрами!

 "распорядок дня определяла работа..."

Гийом Мюссо - Девушка из Бруклина

От произведения "Острие Бритвы" Моэма я получил реально удовольствие, появилось много новых интересных мыслей. От Театра же, я ничего нового не получил. К мысли о театральности я пришел как-то возвращаясь с работы в первом меде больше десяти лет. А в общем, хотел было сказать о Джулии, а точнее о большинстве женщин и их странных поступках, но автор переложил мои мысли в одну фразу:

- Ну и ведьма ты!

Некоторые могут обидится, но автор книги показал и реакцию Джулии на эти слова, и они скорее были ей лестны, чем оскорбительны

понедельник, 21 ноября 2022 г.

 Сбегал в ЦОН и прошел квест по получению ЭЦП и личного кабинета на егов. А там был паспорт вакцинации. Вообще день был плодотворный - я наконец получил комплект зимней резины из СПб, лекарства и кой-чего по мелочи. Обе доставки опоздали на неделю!

"- Что Вы делаете?

она сидела на полу в окружении фотографий

- Смотрю сны...."

воскресенье, 20 ноября 2022 г.

Мда....
 

 Сомерсет Моэм Театр

С одной стороны концовка книги - не концовка, с другой стороны вроде и хэппи энд. А с третьей стороны, вспоминая раздирающее желание узнать что же было дальше в книгах Баха и разочаровавшись, наверно я сам придумаю конец книги....

суббота, 19 ноября 2022 г.

Highlightjs добавляем перевод строки

Ну не красиво было - скроллы даже для однострочных вставок. В blogger в настройках Тема - Изменить HTML, добавляем стиль для pre:
pre {
	white-space:pre-wrap !important
}

Но у нее свои косяки, изначально просто некрасиво, а со стандартным "крутым" стилем вообще не видно, т.к. цвета что мой фон. Для себя сделал такой стиль:

MSerror Litemanager белое окно


Описание проблемы:

  • При подключении к серверу, превью - белый квадрат
  • Клик по превью не разворачивает подключение
Дополнительные наблюдения:
  • Проявляется на ПК при отключении от внешнего монитора, куда ранее выводилось данное подключение
  • Переустановка не помогает (ни сервер, ни клиент) или помогает, но не надолго

MSerror RDP не пробрасывается буфер обмена

 Описание проблемы:

  • Буфер обмена между RDP сервером и клиентом не синхронизируется
  • Буфер обмена работает по отдельности на сервере и клиенте
  • В настройках подключения разрешена передача горячих клавиш (на случай использования)
  • В настройках подключения включена передача буфера обмена
Дополнительные наблюдения:
  • Сеанс RDP активен давно
  • Проблема решается выходом (не отключением сеанса) и повторным входом
  • Процесс rdpclip.exe пользователя потребляет много больше (>20Мб), в сравнении с другими пользователями удаленного рабочего стола (~5 Мб)
Решение проблемы:
Собственно решений два - либо перезайти нормально или перезапустить процесс rdpclip.exe у пользователя с проблемой. 
taskkill /F /FI "USERNAME eq %username%" /IM rdpclip.exe && ping -n 5 127.0.0.1 >null && rdpclip.exe
Также может помочь перезапуск explorer.exe

 "физический труд излечивает от умственного переутомления"

 "брось в реку камень и вот ты уже чуть изменил вселенную"

 "Вы глубоко религиозный человек не верующий в Бога. Бог Вас разыщет..."

четверг, 17 ноября 2022 г.

MSError Синхронизация времени в домене

Так, собственно моя история борьбы с этой штукой

Проблема возникла давно (года три назад), время расходилось на некоторых ПК аж на час, при этом kerberos ничуть не смущался и спокойно пускал куда надо. Когда начал лечение, делал по различным инструкциям при помощи GPO, программ NetTime, пытался указать насильно сервер обновления времени (роутер) и т.д. Понятно что некоторые варианты прокатывали, но под одной из статей я увидел гневный коммент пользователя, который сетовал на горе-админов, у которых руки из жопы и они настраивают время при помощи GPO. Распространение времени должно работать из коробки силами контроллера домена, единственная задача админа - настроить DC с ролью FSMO - PDC на получение времени снаружи.

MSError Не удалось запросить журнал событий DFS Replication на сервере

Банальная ошибка, решается также банально - проверь настройки брандмауэра:
Eng: Remote Event Log Management (RPC) и Remote Event Log Management (RPC-EPMAP)
Rus: Удаленное управление журналом событий (RPC) и Удаленное управление журналом событий (RPC-EPMAP)

В принципе оно не обязательно, т.к. запрашивает только лог, но я иногда смотрю журнал событий другого ПК через оснастку "Управление компьютером", поэтому в групповой политике FireWall добавил данные правила (предопределенные "Удаленное управление журналом")

MSError Некоторые подразделения (OU) в этом домене не защищены от случайного удаления.

Алерт ясен как божий день, но не ясно как определить проблемные OU и установить им автоматически параметр в Истину. Собственно для ручного варианта включаем дополнительные параметры и смотрим в свойствах OU


Для автоматического варианта (выполняется на контроллере домена через PowerShell)

получил справку о прохождении вакцинации, сказали сходить в ЦОН получить QR???

среда, 16 ноября 2022 г.

 "Друг-мошенник в первую очередь мошенник, а потом уже друг"

Можно описать и так, оно короче и уже нацелено, но я бы сказал немного по другому - человек в первую очередь человек, и чтобы он ни делал, он делает это в первую очередь для себя и не важно насколько он бескорыстен в тот или иной момент, ибо бескорыстие, также как и бездействие - действие, тоже корысть

вторник, 15 ноября 2022 г.

MSError Пробрасываются только принтеры Microsoft

Решения здесь нету, сказ лишь о том, что верить пользователям нельзя, и проверять все нужно лично.

Говорит работало - принтер в RDP сеансе, да вроде я и сам видел...

Уточним:

  • клиент - Windows 7 x64
  • сервер Windows server 2019
  • принтер HP M125rnw (USB)
  • политика сначала EasyPrint, потом дрова
  • не пробрасывается на сервер
Собственно, если не обращать внимания на "раньше работало", решается установкой драйвера версии идентичной на клиенте (иногда и язык должен быть такой же). Что я благополучно сделал и отрапортовал об этом пользователю. 
- Не печатает с сервера - пишет на следующий день
- Вчера же работало
- Нет, я просто не стала писать сразу
- Но я же проверял - ага, проверял он, я просто отправил и увидел что ничего нигде не зависло

Т.о. подведем итог:
  • принтер работает локально
  • принтер пробрасывается на сервер
  • задание передается с сервера на клиент и уходит на принтер (задание не зависает в очереди)
  • принтер не печатает удаленно
Далее я решил использовать универсальный драйвер, который, по какой-то причине отсутствовал на страничке принтера на сайте производителя. Попробовал 3 разных принтера и на обоих получил интересный результат:
  • принтер не работает локально
  • задание улетает на принтер
  • принтер пробрасывается
  • принтер не работает удаленно
  • задание передается с сервера на клиента и уходит на принтер
Также были проверены: версия NetFramework >3.5, RDC version >6.1, настройки подключения
Дальше я решил проверить, а не в сервере ли проблема (хостер божился что нововведений не было). Открыл подключение с другого ПК с ОС Windows 10, и результат был такой же, пробросились только принтеры MS и те, драйвера которых, были установлены на сервере. Проверка еще на двух машинах дала ту же картину. Проверка  с больного клиента на другом сервере, того же хостера дала ту же картину, плюс пробросились принтеры с установленными драйверами.

В итоге отправил запрос хостеру на включение EasyPrint, ибо моих правей недостаточно.

Хостер включил EasyPrint, принтер установился с драйвером EasyPrint и работает

MSError Ошибка 80244019 на клиентах WSUS

 Сдох WSUS на базе WinSrv 2008R2, решили передать роль новому WinSrv2019.

Установил, изменил запись DNS, чтобы имя сервера обновлений передаваемое через GPO не менять. Клиенты в консоли появляться не стали, пробовал выполнять сброс wuauclt /resetauthorization и wuauclt /detectnow, ноль внимания, при этом на всех ПК при попытке запустить поиск выскакивает ошибка 80244019. Начал копать:

  • проверил что реестре сервер указан правильно (HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate)
  • проверил что имя резолвится, указывал не полное имя без домена
  • Поменял имя в записях DNS и в настройках GPO (с wsus на wsus2)
  • Проверил настройку WSUS что тачки падают в группы сразу (консоль WSUS - параметры -компьютеры- использовать на компьютерах групповую политику или параметры реестра)
  • Проверил в GPO куда складываются компьютеры (Разрешить клиенту присоединение к целевой группе)
  • открыл лог на стороне клиента и увидел забавную строчку:
    WARNING: DownloadFileInternal failed for http://wsus2/selfupdate/wuident.cab: error 0x80190194
Собственно тут пошел проверять и действительно, браузер возвращает 404. Поясню, я не переделывал с нуля, поэтому не обратил внимание на отсутствие порта в "Указать размещение службы  обновлений Майкрософт в интрасети". Проверил что файл скачивается с портом 8530, исправил политику и поиск запустился и тачки начали появляться в консоли WSUS


Далее примитивный скрипт обновления политик и перезапуска регистрации на сервере WSUS, не без изъянов, но в моем случае его достаточно, чтобы по быстрому увидеть изменения в консоли WSUS

Сайт 1С упал, успел вчера скачать.

Платформа X64 8.3.20.2180 (windows64full_8_3_20_2180)

Aladdin monitor

Надоело каждый раз искать

 Aladdin monitor HASP (Аладдин Монитор, Аладин монитор)

Напоминаю: Монитор не покажет ключи, если хоть одна лицензия не выдана!!!!

понедельник, 14 ноября 2022 г.

Чип проверили, добавили витаминок приживания для, сказали за справкой сегодня не ходи, завтра ходи, а лучше послезавтра. Также медсестра поделилась воспоминаниями о погоде в Атырау когда она ходила в школу, год то был 72 второй 20го столетия:

- Плюнешь и долетает сосулька

Где то я уже слышал о таком методе определения температуры, что то около -40.... Сейчас же, если верить тырнетам температура зимой не опускается ниже -5 градусов...

Хотя это нивелируется ветрами, порой кажется что ты не в городе, а на лодке в бурю...

А некоторые утро встречали так:


К середине дня палатку разобрали и увезли.

воскресенье, 13 ноября 2022 г.

 Сомерсет Моэм "Острие бритвы"


Легкий вечерний дождик....

Excel нельзя использовать относительные ссылки для цветовых шкал

 Сразу спойлер - данное решение не является полным аналогом цветовых шкал, т.к. не может подсвечивать промежуточными значениями цвета.

По сути дела сама фича (цветовая шкала Excel) работает по принципу - значение ячейки (не важно сколько их в диапазоне, работает над каждой) в пределах диапазона соответствует рассчитываемому значению самим форматированием, а значение для диапазона считается  как МАКС(Выделенного диапазона):




В связи с такой логикой, получить выделение строки по сумме этой строки с относительными ссылками невозможно.

А задачу надо решать, а как?

Типа картоха айдахо


Проспал 15 часов...

Вчера поставили палатку и вот эти штуки, сначала было подумал что это связанное с ремонтом, но посудины тонко намекают на еду. В чате предположили что это подготовка в похоронам...


Решил постирать тапки, даже на балконе с открытым окном спустя 18 часов они мокрые, батареи чуть теплые, поэтому сушим над плитой...


Сегодня авария где-то на линии, поэтому бесят электролинию. А она, походу, связана с водой - горячей почти нету...

 Если бы не внутренний ханжа, то можно было бы сказать что книга не только навела на кое-какие мысли, но и принесла удовольствие большее...

суббота, 12 ноября 2022 г.

1СОшибка -2147221164(0x80040154): Класс не зарегистрирован

 Частая ошибка, решаемая банальной регистрацией comcntr.dll, но оказывается есть частные случаи, именно с таким я и столкнулся. Имеется сервер 2019, разработчик под учеткой с правами обычного пользователя получил такую ошибку. Что было предпринято:

  1. первое решение
    1. регистрация библиотеки требуемой версии платформы
  2. второе решение
    1. удалена регистрация библиотек других платформ (regsvr32.exe -u)
    2. зарегистрирована еще раз нужная
  3. третье решение
    1. удалены все платформы
    2. установлена требуемая по новой
    3. зарегистрирована библиотека
    4. перезагружен сервер
"Человек был не собственником планеты, а всего ее управителем, которому однажды придется отвечать за свое управление"

пятница, 11 ноября 2022 г.

 "Что же хранится по ту сторону Es muss sein .... он делал вещи, на которые ему было плевать и это было прекрасно, он внезапно понял счастье людей, до сих пор он всегда жалел, занимающихся профессиями которые не принуждают их ни к какой внутренней Es muss sein и о которых, покинув свое рабочее место, могут тотчас забыть. Никогда прежде он не знал этого благостного безразличия..."

Работая разнорабочим я вполне ощутил это благостное безразличие, перейдя на новую профессию и расширяя зависимости я прихожу к тому, что это все очень тяготит и хочется вернутся туда...

 "Гавно, с теологической точки зрения, проблема более сложная, нежели зло..." какое интересное умозаключение....

четверг, 10 ноября 2022 г.

Zabbix боремся с автопереводом единиц измерения

 Сделал я себе триггер на изменение скорости порта и вот что он прислал мне:


Выясняется, что заббикс сам переводит Kilo=>Mega=>Giga=>Tera..., но блин, мне коммутатор отдает в мегабитах! И тут есть два варианта:
  1. Привести мегабиты в биты
  2. Добавить единицу измерения в черный список (include/func.inc.php)

Zabbix Шаблон D-Link SNMP discovery

 После этого квеста задался вопросом, а могу ли я при помощи заббикса отслеживать состояние порта на коммутаторах D-LINK? Оказывается могу, и опять при помощи SNMP. Нашел на узле элементы с OID 1.3.6.1.2.1.2.2.1.8 (ifOperStatus), создал триггер (1-UP,2-DOWN)
......
сижу
....
жду
....
ничего не происходит
.....
Понимаю что где-то косяк, поясняю у гугла, а он говорит что это значение говорит о потери сигнала, как будто кабель выдернули, а ты хочешь фиксировать именно отключение.

среда, 9 ноября 2022 г.

"Я все понимаю, я знаю чего ты хочешь, я все устроил. Просто взойдешь на вершину Петршин...
....
- Это точно Ваше желание?
- Да, это мое желание - сказала Тереза
- Не каждый готов умереть, поэтому мы должны быть уверены что это Ваше желание
- Да, это мое желание - произнесла Тереза
....
- Нет, это не мое желание - произнесла Тереза
- Тогда мы не можем этого сделать"

......

понедельник, 7 ноября 2022 г.

Mikrotik script как скрипт управления D-Link`ом по SNMP писали

Есть у меня сервер, с воткнутым в него свистком, который принимал смс. По крону смски проверялись и выполнялись определенные операции при поступлении управляющих кодов. Последнее время модем начал глючить, да и баланс уже год не показывает и сервер состарился, а тут еще и wAP LTE освободился. Я точно знаю что можно с него (аппарат на базе R11e-LTE) читать  и отправлять SMS, и даже USSD запросы.

 "но никто не дал им инструкций как поступать, когда на них будет направлен объектив фотоаппарата"
теперь инструкции есть....

Mikrotik Script Error: cannot substract nothing from string

 Сижу туплю, что за ошибка, ведь в консоли этот фокус прокатил. Добавил:

:put [:typeof $MyVar]

получил, как и ожидал, ответ:

array

- так что ты тогда хочешь?! - негодовал я

В итоге увидел случайно, что я не дописал извлечение элемента массива, я написал так:

:put ($MyVar-"exit-code")

а надо:

:put ($MyVar->"exit-code")

Глаз на столько замылился, что спустя 100+ таких конструкций, перестал замечать

 Кундера Милан Невыносимая легкость бытия

воскресенье, 6 ноября 2022 г.

Mikrotik script проверить наличие другого экземпляра и вызвать исключение

 На bash мы можем заглянуть в диспетчер задач (ps) и найти процесс нашей программы, прежде чем ее запускать (здесь рассматривал). На Mikrotik же такого нету, приходится извращаться. Зачем это надо?, если один из экземпляров программы по какой то причине зависнет, а еще он использует глобальные переменные, то мы можем получить неожиданный результат, поэтому лучше избегать таких коллизий. 

Сама идея проста - проверить некоторую глобальную переменную, которую создаем после проверки, но у Mikrotik свои заморочки и приходится изгаляться:

# ищем среди глобальных переменных. ошибки здесь не будет, либо "", либо id
# в отличии от поиска через get, там и ошибки, и "не моментальное заполнение" списка,
# т.е. первый экземпляр висит уже 10  сек, а переменные через get еще отсутствуют
:if ([/system script environment find where name=RunProgram]!="") do={
	:log error ("There is another instance of the program running, exit")
	:error message="There is another instance of the program running, exit"
}
# объявляем глобальную переменную
:global RunProgram true
...
...
...
# уничтожаем переменную
:set RunProgram

Есть более изящный вариант - проверка в текущих заданиях:

:local scriptname "MyScript"
:if ([:len [/system script job find script=$scriptname]] > 0) do={
	:log error "There is another instance of the program running, exit"
    :error message="There is another instance of the program running, exit"
}


Mikrotik script странности функций и массивов

 Привык использовать функции не только для повторяющихся задач, но и для массивных кусков кода. Например мне нужно сформировать строку с OID из массива и передать ее по ssh, я конечно могу ее сформировать прямо внутри блока, но такая политика сделает код менее читабельным. И вот тут у скрипта Mikrotik возникает проблема - функции должны быть глобальными. Стараюсь по минимуму использовать глобальный контекст, но вызвать локальную функцию из локальной функции нельзя. Только глобальную. Даже с передачей в локальной переменной именованного массива (:local MyVar{"X"="Y";"Y"="Z"}) бывают проблемы. Поэтому приходится использовать глобальный контекст. Не забываем для глобального контекста внутри функции объявлять функцию/переменную в глобальном контексте (я бы назвал не объявлять, а инициализировать, она как бы есть, но функция о ней ничего не знает, но на сайте микротика написано declared).

Не работает:

:global MyVar 0

:local MyFunc do={
	:put $MyVar
}

$MyFunc

работает:

:global MyVar 0

:local MyFunc do={
	:global MyVar
    :put $MyVar
}

$MyFunc

Не работает:

:local MyFunc2 do={
	:return ($1+$2)
}

:local MyFunc do={
	:return ([$MyFunc2 $a $b])
}

:put [$MyFunc a=2 b=3]

работает:

:global MyFunc2 do={
	:return ($1+$2)
}

:local MyFunc do={
	:global MyFunc2
	:return ([$MyFunc2 $a $b])
}

:put [$MyFunc a=2 b=3]

Собственно если внимательно прочитать это, то таких проблем возникать не должно

Mikrotik script удалить все глобальные переменные

 Примитивная задача, почему нельзя было придумать что-нибудь типа:

/system script environment clear

или

/system script environment remove *

или

:environment clear

???

приходится описывать так

:foreach var in=[/system script environment print as-value] do={
	/system script environment remove ($var->".id")
}

Mikrotik remove all global variables and function

усложнили задачу, есть некоторая вероятность удаления переменных других скриптов, поэтому задаем себе правило - во всем глобальном иметь префикс, удалять будем именно по нему

# в самом начале объявляем локальную, просто чтобы видеть ее
:local pref "chksm"

# далее наша какая то программа начинается
:global chksmMyVar false
:local MyLocalVar 0
....
:global chksmTest do={
	:put "TEST"
}
....
:local chksmTestLocal do={
	:put "TEST LOCAL"
}
....
# далее наша какая то программа заканчивается

# удаляем глобальные переменные
:foreach var in=[/system script environment print as-value] do={
	:local prefVar [:pick ($var->"name") 0 [:len $pref]]; 
	:if ($prefVar=$pref) do={
		/system script environment remove ($var->".id")
	}
}


суббота, 5 ноября 2022 г.

пятница, 4 ноября 2022 г.

 "Дело в том, что мир понемногу идет к концу и такие вещи больше не случаются"

"Он верил что день его смерти предопределен и вера облекала его чудесной броней"

Сложно спорить с тем, что все в мире предопределено, не с точки зрения того, что кто то знает будущее, а с точки зрения того, что каждое событие ведет к определенному результату будь он в ближайшем неизвестном или в далеком. Исходя из выше сказанного, можно ли предположить что принятие неизбежности как факта уже свершившегося дал полковнику, скорее лишил его страха неминуемой смерти, а значит изменил саму суть его?

Уже 40 минут в очереди, на банальное закрытие карты. Хочу закрыть новую мультивалютную карту из-за того, что ее нельзя будет потом закрыть удаленно, а офисы есть только в Казахстане.

Mikrotik script добавление в массив

Задача простая - прочитать смс, сверить номер отправителя со списком разрешенных, проверить текст сообщения и принять решение. Соответственно после обработки смс, нужно его удалить, но удалять во время обхода списка смс нельзя, т.к. массив сломается. Поэтому будем складывать id сообщений в массив, а для лога мне нужны еще номер и текст, значит будет массив из массивов размерностью 3. Добавить новый элемент в массив, что может быть легче и зачем тратить на это несколько часов?

Начнем с примеров реализации добавления в массив в консоли (скрипте) Mikrotik

Первый вариант добавления в массив


[admin@mikrotik] > :global $arr [:toarray ""]
[admin@mikrotik] > :set $arr {"0000000000001";"0000000000002";"0000000000003"} 
[admin@mikrotik] > :put $arr
0000000000001;0000000000002;0000000000003
[admin@mikrotik] > :put ($arr->1) 
0000000000002
[admin@mikrotik] > :set $arr ($arr,"000000000000X")
[admin@mikrotik] > :put $arr
0000000000001;0000000000002;0000000000003;000000000000X
[admin@mikrotik] > :put ($arr->3)
000000000000X

Второй вариант добавления в массив (используем длину массива для получения следующего индекса, муторный путь, но работает)


[admin@mikrotik] > :global $arr [:toarray ""]
[admin@mikrotik] > :set $arr {"0000000000001";"0000000000002";"0000000000003"} 
[admin@mikrotik] > :put $arr
0000000000001;0000000000002;0000000000003
[admin@mikrotik] > :put ($arr->([:len $arr]-1)) 
0000000000003
[admin@mikrotik] > :set ($arr->([:len $arr])) "000000000000X"
[admin@mikrotik] > :put $arr
0000000000001;0000000000002;0000000000003;000000000000X
[admin@mikrotik] > :put ($arr->3)
000000000000X

Третий вариант добавления в массив - "именованный"


[admin@mikrotik] > :global $arr [:toarray ""]
[admin@mikrotik] > :set $arr {"one"="0000000000001";"two"="0000000000002";"three"="0000000000003"} 
[admin@mikrotik] > :put $arr
one=0000000000001;two=0000000000002;three=0000000000003
[admin@mikrotik] > :put ("$arr"->"two")
0000000000002
[admin@mikrotik] > :set ("$arr"->"four") "0000000000004"
[admin@mikrotik] > :put $arr
four=0000000000004;one=0000000000001;three=0000000000003;two=0000000000002
[admin@mikrotik] > :put ($arr->"four")
0000000000004

Четвертый вариант добавления - массив в массив из массивов (2D массив)


[admin@mikrotik] > :global $arr [:toarray ""]
[admin@mikrotik] > :set $arr {{"0000000000001";"0000000000002";"0000000000003"};{"0000000000011";"0000000000022";"0000000000033"};{"0000000000111";"0000000000222";"0000000000333"}} 
[admin@mikrotik] > :put ($arr->1) 
0000000000011;0000000000022;0000000000033
[admin@mikrotik] > :set $arr ($arr,{{"0000000000XXX";"0000000000ZZZ";"0000000000YYY"}})
[admin@mikrotik] > :put ($arr->3)
0000000000XXX;0000000000ZZZ;0000000000YYY
[admin@mikrotik] > :put ($arr->0)
0000000000001;0000000000002;0000000000003
[admin@mikrotik] > :put $arr 
0000000000001;0000000000002;0000000000003;0000000000011;0000000000022;0000000000033;0000000000111;0000000000222;0000000000333;0000000000XXX;0000000000ZZZ;0000000000YYY

А вот в скрипте возникает какая-то хрень, точнее вывод показывал какую-то хрень, а по факту выяснилось, что в 2х смс (но я не смог найти на телефоне) последним символом сообщения был мать его перенос строки! Да!, вот этот - "\n" символ переноса строки. Да, его видно в Winbox если поместить значение в глобальную переменную, но я грешил не на смс, а на формирование самого массива. В связи с чем пришлось искать методы обхода:


# Это функция, на входе текст, на выходе обработанный текст
:local RemoveLineBreak do={
	:local textM $1
	:local textMnew "";
	:for i from=0 to=([:len $textM] - 1) do={
	   :local char [:pick $textM $i];
       #:put ("|" . $char . "|") Вот так увидел что есть что-то лишнее еще на этапе получения текста из массива смс
	   :if ($char != "\n") do={
		   :set textMnew ($textMnew . $char);
		 };
	};
	:return $textMnew
}
#Применение, полагаем что TextSMS содержит в себе текст с переводом строки
:set TextSMS [ $RemoveLineBreak $TextSMS ]

вторник, 1 ноября 2022 г.

 "А вот розовых мы чуть оставили, чтобы у либералов вопросов не было"

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

К врачу днем надо было, а утром был град и шквальный ветер. Градинки напоминали крупную соль. Ветер плюс дождь оставили осадок на машине.

 а дети, как и везде, х**в понарисовали на машине.


Еще и поцарапали капот :-(