Network: ntttcp

В целом утилита возможна для получения “пристрелочных” результатов как замена iperf – генерирует raw TCP/UDP трафик (не HTTP) с преднастроенным payload (AAA…) по указанному количеству потоков между серверной и клиентской частью.

Сотрудники Microsoft авторы утилиты и MS именно ее рекомендует использовать для throughput тестирования в Azure.

Читать дальше

Coding/Network: Программирование для сетевых инженеров, сетевая автоматизация (devnet, netdevops, netops)

  • Местами информация взята из собственного достаточно богатого опыта, местами из статьи habr и подкастов linkmeup
  • `Автоматизация позволяет допускать меньше ошибок за счет учета алгоритмами типовых вещей, с другой стороны, если в самой автоматизации будет допущена ошибка, масштаб этой ошибки может быть очень глобальным (на моей памяти были примеры массовых окирпичиваний :)) – поэтому скорость деплоя зачастую не так важна при работе с сетевыми устройствами (в том числе поэтому от использования cli интерфейса для автоматизации не слишком страдают) и администраторы кучу раз перестраховываются перед массовым деплоем в прод, в том числе разнося изменения по времени.


Читать дальше

Системное программирование (C, C++, RUST)

 

  • Для отладки кода C, в том числе даже таких крупных проектов (напр. пропусков атак в них) как snort/suricata можно и нужно использовать отладчик GDB.
The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, Assembly, C, C++, D, Fortran, Haskell, Go, Objective-C, OpenCL C, Modula-2, Pascal, Rust and partially others.


Читать дальше

Заметки по JMeter

Заметки

  • JMeter легко масштабируется с использованием remote_hosts (distributed mode) в одной подсети (см. подробнее ниже).
  • На практике можно запустить очень много JMeter нагрузчиков – знаю о инсталяциях с 10 ТЫС. JMeter
  • JMeter использует Java, поэтому требует установленный Java и, как ни странно Microsoft Visual C++ Redistributable (подробнее ниже)
  • Кроссплатформенный (Windows, Linux)
    • Иногда требуется тюнинг TCP параметров стека (напр.


Читать дальше

Synstart – синхронизация времени запуска программ и утилит в Linux

synstart решает задачу синхронизации старта запуска программ за счет их предварительной планировки по времени (см. cron). Код простой на python.

В сравнении с at/atd погрешность запуска программ между демонами значительно ниже – вместо секундной погрешности в at/atd при использовании synstart получаем миллисекундную погрешность (возможно добиться вплоть до 10 микросекунд при тюнинге sleep на демонах).

Читать дальше

Coding, Network: API и методы работы с ним (SOAP, REST, JSON, XML, YAML, YANG, TOML, protocol buffers/Apache Thrift, graphQL; SWAGGER, WSDL, WADL; restconf, netconf; Cisco PXGRID)

  • В общем про api и методы взаимодействия с ними (soap, rest, yang, soap, xml, json, restconf/netconf, etc) в отдельной статье
  • О применении разных современных протоколов и инструментов для мониторинга отдельная статья
  • Использование json в разных языках php, ruby

Пример почему API это нужно и важно – большая часть современных Security продуктов Cisco имеют API (ISE, FirePower, Stealthwatch, AMP, CloudLock, DUO) для поддержки мониторинга/конфигурации с использованием API.

Читать дальше

Coding: Python

  • Python.org – основной сайт. Тут можно скачать актуальный python на windows/linux/mac os, посмотреть документацию
  • Гвидо ван Россум – творец языка. По сути аналог Линус Торвальдса для Linux.
  • Python – the second best language for everything. И это действительно так, включая новые-модные devops, AI, BigData, autotests.


Читать дальше

Ruby HTTP get/post

Simple get

Простая функция для отправки http get.

def get(request)
request = CGI::escape(request)
uri = URI("http://#{$server}/#{request}")
Net::HTTP.get(uri)
end

Get with header

Пример запроса с header. Обращаю внимание, что в старой версии ruby 1.9.3 обязательно нужно к uri применить метод .request_uri, в новых не обязательно.

Читать дальше

Linux: программирование в bash (полезные скрипты, получение опций в скриптах, функции, условия, циклы, case, массивы)

exit code
При написании скриптов строго говоря нужно знать один exit code: 0 (success).
 
Остальные это не успех по разным причинам. При скриптинге я обычно использовал exit 1 для обозначения любой ошибки, не ориентируясь на таблицу по ссылке выше или другую (противоречивую) информацию по каким-то якобы нормам.


Читать дальше

Ruby: генератор списка выходных на год

Простейший генератор списка выходных на год.

Что можно кастомизировать (жирным в коде):

  • В переменной cur_date указываем дату отчета
  • В счетчике можно подкрутить количество дней с 365 до любого количества
  • Строку вывода можно заменить генерацией INSERT в какую то SQL таблицу (закоменчено)
#bin/generate_vacation_list.rb


Читать дальше