Network: ntttcp

  • (iperf/ntttcp) Microsoft не рукомендует использование iperf3 на Windows в пользу использования ntttcp (в первую очередь)/ctstraffic – iperf3 оффициально на винде не поддерживается (в отличии от второй версии), он обычно использует прослойку в виде cygwin и нестандартные вызовы сетевого стека – первое может накладывать задержку, второе не эмулирует реальные приложения.


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

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 спец. символы и переменные (> >> $ & # ~/$HOME $USER \ | /n \t ^M $? * ; ()), redirect stdout/stderr, ALIAS, bashrc, profile; программирование в bash (полезные скрипты, получение опций в скриптах, функции, условия, циклы, case, массивы)

  • man (смотрим по man man)
$ man 7 ping
No manual entry for ping in section 7
See 'man 7 undocumented' for help when manual pages are not available.
$ man 8 ping

$ man 1 top
    • section 1 – executable program / user commands
    • section 2 – system call
    • section 3 – library call
    • section 4 – special files
    • section 5 – configuration files
    • section 6 – games
    • section 7 – misc
    • section 8 – system commands (used by root)
    • section 9 – kernel routines
  • apropos – поиск строки в заголовках man для разных утилит/сервисов
% apropos apache
ab(1) - Apache HTTP server benchmarking tool
apachectl(8) - Apache HTTP Server Control Interface
httpd(8) - Apache Hypertext Transfer Protocol Server
logresolve(1) - Resolve IP-addresses to hostnames in Apache log files
rotatelogs(8) - Piped logging program to rotate Apache logs

% apropos apropos
man(1), apropos(1), whatis(1) - display online manual documentation pages
  • Узнать какой SHELL
~ echo $SHELL
/bin/bash

bash-3.2$ echo $SHELL # MACOS
/bin/zsh
  • https://www.gnu.org/software/bash/manual/


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

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

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

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

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


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