T-Hist 1.8.3 – History utility for FTN mailers


T-Hist

T-Hist – History utility for FTN mailers

Supported:
Binkd, qico 0.60.2+, T-Mail, Argus, Internet Rex, FrontDoor, Bink/+, FhMail,
BinkleyTerm-XE, The Brake!, KittenMail, DVMmail, XMail32, BasicMail
and any other FTN-mailers using the T-Hist or T-Mail binary log formats

Version 1.8.2

Linux (x86_64, i686, arm64) and Windows (Win64, Win32) executables


Cодержание

Назначение T-Hist

Утилита T-Hist предназначена для создания текстовых файлов со статистикой работы одного или нескольких FTN-мейлеров в течение заданного интервала времени заданной даты для заданных FTN-адресов. Информацию для генерации статистики T-Hist получает из бинарных логов, также называемых файлами истории. Термины бинарный лог и файл истории в данном документе считаются эквивалентными.

Разработка T-Hist была начата в 1996 году, первоначально только для получения статистики мейлера T-Mail. В дальнейшем список поддерживаемых мейлеров и форматов бинарных логов расширился. Последняя версия T-Hist для DOS, OS/2 и NT (win32) – 0.30.alpha7 – была выпущена в 2003 году. После этого процесс разработки остановился на 23 года.

В 2026 году работа над проектом была возобновлена. Выпущеные новые версии T-Hist и сопутствующих утилит для Linux и Windows. Поддержка старых операционных систем удалена.

Везде далее в документе под термином старые версии понимается версия 0.30.alpha7 и более ранние версии утилиты, а под термином новые версии – версии 1.x.x.

Структура распространяемого ZIP-архива с утилитами

Утилиты распространяются в виде ZIP-архива, содержащего следующие каталоги:

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

Каталог с документацией содержит:

Кодировка текстовых файлов UTF-8.

Виды генерируемой статистики

Результатом работы T-Hist являются три текстовых файла:

Все файлы имеют кодировку UTF-8. Если созданную статистику необходимо разместить в русскоязычной эхоконференции или нетмейле, преобразуйте файлы в кодировку CP866:

iconv -f UTF-8 -t CP866 in.txt -o out.txt

Помимо данных о числе и продолжительности сессий и трафике, таблицы со статистикой могут содержать дополнительные отметки, зависящие от того, бинарный лог какого формата/мейлера обрабатывается:

В конце каждого из создаваемых файлов выводится суммарная информация о числе и продолжительности всех входящих и исходящих сессий, суммарное число сессий и их продолжительность, объём полученного и переданного трафика и средний CPS, характеризующий скорость передачи/приёма данных (CPS – "chars per second", или, что то же самое, "bytes per second"). Если мейлер поддерживает отметку сессий, защищённых паролем, то в суммарной информации также выводятся значения для парольных и непарольных сессий.

Значения величин трафика могут выводиться в статистике с использованием как единиц измерения, основанных на двоичных степенях (KiB – 1,024 байт, MiB – 1,048,576 байт и GiB – 1,073,741,824 байт), так и с использованием единиц измерения, основанных на десятичных степенях (kB – 1,000 байт, MB – 1,000,000 байт и GB – 1,000,000,000 байт). Используемые единицы измерения задаются параметром DecimalUnits в конфигурационном файле или опцией командной строки -r. Чтобы не нарушать форматирование, обозначения величин в статистике выводятся однобуквенными (K, M, G), а после суммарной информации выводится расшифровка, означают ли эти буквы двоичные единицы измерения (KiB, MiB, GiB) или десятичные (kB, MB, GB).

Длительность отдельных сессий и суммарная длительность сессий выводятся в статистике в одном из двух форматов:

Интервалы времени больше 24 часов в суточной статистике могут появляться при подсчёте суммарной длительности сессий на узлах с высокой загрузкой, выполняющих одновременно несколько параллельных сессий. Также большие суммарные длительности сессий могут быть в многодневной статистике, создаваемой утилитой LnkStat, которая будет рассмотрена ниже.

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

Ниже приведены примеры фрагментов файлов статистики, полученных на узле Alex Barinov (2:5020/715).

Пример графика и гистограммы загрузки узла

              0   2   4   6   8  10  12  14  16  18  20  22  24               
               ├─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┤Ses  Rcvd  Sent
2:5020/101     ▐ ▐ █▌  │█ █▐▐█▐▐█▐▐▐█▐█▐█▐▐▐▐▐▐█▐█▐▐█▐▐▐ █▐▐▐▐▐│277  3.7K  202K
2:5020/113     │▌ ▌▌▌  ▌ █ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐▐│ 28 14.9K 53.4K
2:5020/378     │   │   │   │▌  │  ▌│ ▐ │▌  │   ▌  ▌▌▌  ▌  ▌│ ▐ │ 11  2.4M  142K
2:5020/715.100 │   │   │   │ ▌ │   │   │  ▐│   │   │   │   │   │  2     0  285K
2:5020/830     │▌  │▌  │▌  │▌  │▌  │▌  │███▐█ ▐▐▌█ ▐█ ▐│▌██▐▌▐▐│ 50  300K  1.2M
2:5020/1200    │   │   │   │   │   │   │   │  ▐│   │ ▌ ▌   ▐▐▐ │  6 1290M  5.7M
2:5020/1477    │█  │▐▌ │ █▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐█▐█▐▐▐▐▐▐▐│365     0  333M
2:5020/1668    │   │   │   │  ▐│   │▐  │▐ ▐│   │▐  │  ▐│   │▐  │  8     0 90.1K
2:5020/3452    ▐▌  │▌  │█  │▐  │   │▐  │   │  ▐│ █ ▐   │   │   │306     0 55.3K
2:5020/4096    ▐▌▐ ▐   │ ▐▌▐▌▐ ▐ ▐ ▐▌▐▌▐▌▐ ▐ ▐▐▐ █ ▐▌▐▐▐ █▐▐ ▐ │138     0  161K
2:5020/9696    │▐▌ │ ▌ │ ▌ │ █▐▐ ▐▌▌▌ ▌████▐██▐▐█▐▌▐██▐▌███▐█▌▐│256     0  794M

[...]

                                 Busy Histogram
           100%┬                                                  Rcvd:   1319M
               ▐▌   ▌    ▌                                        Sent:   10.9G
   Sessions    ▐▌   █   ▐▌                           ▌            ─────────────
               ▐▌▐ ▐█   █▌                           ▌            Average      
 Total: 19860  ▐▌▐ ▐█   █▌                           ▌            CPS:   706.4K
 ────────────  ▐▌▐ ▐█   █▌  ▐                        █ ▌          ─────────────
 In:     2563  ▐▌▐ ▐█   █▌  ▐                        █ ▌   ▐      Time Online: 
 Out:   17297  ▐▌▐▌▐█ ▐ █▌  ▐                        █ █   ▐           17:28:12
 ────────────  ▐██▌████▐██  █                        █ █   ▐      ─────────────
 Aborted:12970 ▐██▌████▐██▌▐█       ▐    ▌   ▐   ▐   █▐█  ▌▐      In:   1:51:38
 Protect:7420  ▐██▌████▐███▐█▄▄▐█▐▄▐███████▐███▐███████████████▌  Out: 15:36:34
             0%┼─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐  ─────────────
               0   2   4   6   8  10  12  14  16  18  20  22  24  Usage:  14.6%

[...]

После графика загрузки T-Hist может строить гистограмму общей загрузки, а также гистограммы для входящих, исходящих, парольных и непарольных сессий. Наличие или отсутствие той или иной гистограммы определяется значением параметра BusyHist в конфигурационном файле или опцией командной строки -b. Если мейлер не сохраняет в бинарном логе отметку парольной сессии, то гистограммы для парольных и непарольных сессий строиться не будут независимо от значения параметра BusyHist или опции -b.

Длительность интервала времени на оси абсцисс графика и гистограмм может превышать длительность интервала времени, для которого создаётся статистика. Длина графика в часах всегда является делителем числа 48 (это значения 1, 2, 3, 4, 6, 8, 12, 16 или 24 часа). Если длина интервала времени для создания статистики не совпадает ни с одним из эти чисел, то длина интервала времени на оси абсцисс графика и гистограмм будет определяться в соответствие со следующей таблицей:

Длительность интервала
для создания статистики
в часах (X)
Длительность интервала
на оси абсцисс
в часах
0 < X ≤ 1 1
2 < X ≤ 3 3
3 < X ≤ 4 4
4 < X ≤ 6 6
6 < X ≤ 8 8
8 < X ≤ 12 12
12 < X ≤ 16 16
16 < X ≤ 24 24

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

Процент загрузки FTN-системы (значение Usage у гистограммы общей загрузки) для мейлеров, не имеющих возможность выполнять одновременно несколько сессий (обычно это dial-up мейлеры), вычисляется как отношение суммарной продолжительности всех сессий к интервалу времени, для которого создаётся статистика:

         суммарная продолжительность всех сессий
        ----------------------------------------- * 100%.
             интервал времени для статистики

Для мейлеров, способных выполнять одновременно несколько сессий (обычно это IP-мейлеры), процент загрузки вычисляется с учетом максимально возможного числа одновременно выполняющихся входящих (N) и исходящих (M) сессий:

         суммарная продолжительность всех сессий      100%
        ----------------------------------------- * -------.
             интервал времени для статистики         N + M

Зачения N и M задаются при описании бинарного лога в конфигурационном файле (см. параметр History) или при указании бинарного лога в командной строке.

Пример статистики линков

╔══════════════════╦═══════════════════════════╦═════════╦═════════════╦══════╗
║                  ║      Sessions / Time      ║  Time   ║   Traffic   ║  CPS ║
║     Address      ╠═════════════╦═════════════╣ online  ╠══════╦══════╣ bytes║
║pwd               ║   Incoming  ║   Outgoing  ║ In+Out  ║ Rcvd ║ Sent ║ /sec ║
╠│═════════════════╬═══╤═════════╬═══╤═════════╬═════════╬══════╬══════╬══════╣
║√ 2:5020/101      ║ 43│ 0:02:10 ║234│ 0:13:11 ║ 0:15:21 ║  3.7K║202.2K║  1.2K║
║√ 2:5020/113      ║ 28│ 0:04:49 ║  -│ -:--:-- ║ 0:04:49 ║ 14.9K║ 53.4K║   999║
║√ 2:5020/378      ║ 11│ 0:00:18 ║  -│ -:--:-- ║ 0:00:18 ║  2.4M║142.4K║191.8K║
║√ 2:5020/715.100  ║  2│ 0:00:03 ║  -│ -:--:-- ║ 0:00:03 ║     0║284.9K║ 94.9K║
║√ 2:5020/830      ║  -│ -:--:-- ║ 50│ 0:03:26 ║ 0:03:26 ║299.6K║  1.2M║ 68.0K║
║√ 2:5020/1200     ║  4│ 0:09:09 ║  2│ 0:00:02 ║ 0:09:11 ║ 1290M║  5.7M║  2.3M║
║√ 2:5020/1477     ║ 39│ 0:01:08 ║326│ 0:17:30 ║ 0:18:38 ║     0║333.1M║  1.7M║
║√ 2:5020/1668     ║  8│ 0:00:41 ║  -│ -:--:-- ║ 0:00:41 ║     0║ 90.1K║ 22.5K║
║√ 2:5020/3452     ║  -│ -:--:-- ║306│ 0:12:20 ║ 0:12:20 ║     0║ 55.3K║ 13.8K║
║√ 2:5020/4096     ║ 19│ 0:00:19 ║119│ 0:10:40 ║ 0:10:59 ║     0║160.5K║  2.8K║
║√ 2:5020/9696     ║  -│ -:--:-- ║256│ 0:18:03 ║ 0:18:03 ║     0║793.7M║  1.3M║

[...]

Пример статистики сессий

╔════════════╤═════╤════════════════════╤══════════╤═════════════════╤════════╗
║  Session   │ Dir │      Address       │   Time   │     Traffic     │   CPS  ║
║   start    │     │pwd             abrt│  Online  │  Rcvd     Sent  │ bytes/s║
╠════════════╪═════╪│══════════════════│╪══════════╪════════╤════════╪════════╣
║  00:00:04  │ Out │√  2:301/1          │  0:00:12 │   5773 │      0 │    481 ║
║  00:00:18  │ Out │   2:5020/5452     A│  0:00:01 │      0 │      0 │      0 ║
║  00:00:18  │ Out │√  2:5001/100       │  0:00:01 │      0 │   1462 │   1.4K ║
║  00:00:18  │ Out │√  2:5051/44        │  0:00:01 │      0 │   1459 │   1.4K ║
║  00:06:03  │ Out │√  2:46/49          │  0:00:02 │      0 │   2207 │   1.0K ║
║  00:05:52  │ Out │√  2:301/1         A│  0:00:43 │      0 │   5102 │    118 ║
║  00:10:17  │ Out │√  2:5030/115       │  0:00:01 │      0 │    678 │    678 ║
║  00:09:40  │ Out │√  2:5020/2992     A│  0:01:07 │      0 │  11353 │    169 ║
║  00:16:15  │ Out │√  2:6078/1         │  0:00:27 │      0 │  21312 │    789 ║
║  00:16:37  │ Out │√  2:5030/1115      │  0:00:42 │      0 │  22459 │    534 ║
║  00:17:24  │ Out │√  2:5020/4096      │  0:00:07 │      0 │  22448 │   3.1K ║
║  00:17:34  │ Out │√  2:5090/138       │  0:00:16 │      0 │  23130 │   1.4K ║
║  00:17:44  │ Out │√  2:5001/100       │  0:00:36 │      0 │  58762 │   1.5K ║

[...]

Пример суммарной информации в конце каждого из файлов

┌──────────────────────────┬───────────────────────┬──────────────────────────┐
│ Total Received :  276.9M │ Total Ses In  :  3299 │ Time In      :   1:09:05 │
│ Total Sent     :   2066M │ Total Ses Out :  8821 │ Time Out     :   3:33:57 │
│ Total Traffic  :   2343M │ Total Sessions: 12129 │ Time Online  :   4:43:32 │
├──────────────────────────┼───────────────────────┼──────────────────────────┤
│ Protected Rcvd :  276.9M │ Prot Ses In   :  3296 │ Protected In :   1:09:02 │
│ Protected Sent :   2066M │ Prot Ses Out  :  5609 │ Protected Out:   2:39:17 │
│ Protected Total:   2343M │ Prot Ses Total:  8905 │ Protected Tot:   3:48:19 │
├──────────────────────────┼───────────────────────┼──────────────────────────┤
│ UnProt Received:       0 │ UnProt Ses In :     3 │ UnProt In    :   0:00:03 │
│ UnProt Sent    :       0 │ UnProt Ses Out:  3212 │ UnProt Out   :   0:54:40 │
│ UnProt Total   :       0 │ UnProt Ses Tot:  3224 │ UnProt Total :   0:55:13 │
└──────────────────────────┴───────────────────────┴──────────────────────────┘
  K is KiB (1024 bytes), M is MiB (1048576 bytes), G is GiB (1073741824 bytes)

Режим широкого экрана

Старые версии T-Hist и сопутствующих утилит содавали файлы статистики со строками, длина которых не превышала 80 символов. В новых версиях появился режим широкого экрана, который включен по умолчанию. В этом режиме справа от графика загрузки и от таблиц со статистикой может выводиться дополнительная текстовая информация, которая есть в бинарных логах некоторых мейлеров, или описание адресов, которое можно задавать в параметрах Addr в конфигурационном файле. Ниже приведены примеры фрагментов статистики, созданной в режиме широкого экрана.

               0   2   4   6   8  10  12  14  16  18  20  22  24
               ├─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┤Ses  Rcvd  Sent   FTN-system info
2:5020/101     ▐ ▐ █▌  │█ █▐▐█▐▐█▐▐▐█▐█▐█▐▐▐▐▐▐█▐█▐▐█▐▐▐ █▐▐▐▐▐│277  3.7K  202K │ n5020.ru, akf, Moscow, USSR
2:5020/113     │▌ ▌▌▌  ▌ █ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐▐│ 28 14.9K 53.4K │ Minas Anor, Moscow, Russia
2:5020/378     │   │   │   │▌  │  ▌│ ▐ │▌  │   ▌  ▌▌▌  ▌  ▌│ ▐ │ 11  2.4M  142K │ 92.36.120.111, klug, Moscow, Russia
2:5020/715.100 │   │   │   │ ▌ │   │   │  ▐│   │   │   │   │   │  2     0  285K │ FidoMailMobile, Zheleznodorozhny
2:5020/830     │▌  │▌  │▌  │▌  │▌  │▌  │███▐█ ▐▐▌█ ▐█ ▐│▌██▐▌▐▐│ 50  300K  1.2M │ 830.ru, TITANIC Station IP, Moscow, Russia
2:5020/1200    │   │   │   │   │   │   │   │  ▐│   │ ▌ ▌   ▐▐▐ │  6 1290M  5.7M │ MetNet Information Center, Moscow, Russia
2:5020/1477    │█  │▐▌ │ █▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐█▐█▐▐▐▐▐▐▐│365     0  333M │ m0d3m's_station, Moscow--Russia
2:5020/1668    │   │   │   │  ▐│   │▐  │▐ ▐│   │▐  │  ▐│   │▐  │  8     0 90.1K │ First Encounters/Binkp, CCCP, Moscow, Russia
2:5020/3452    ▐▌  │▌  │█  │▐  │   │▐  │   │  ▐│ █ ▐   │   │   │306     0 55.3K │ fido.babon.ru, Panzer station II, Moscow, Russia
2:5020/4096    ▐▌▐ ▐   │ ▐▌▐▌▐ ▐ ▐ ▐▌▐▌▐▌▐ ▐ ▐▐▐ █ ▐▌▐▐▐ █▐▐ ▐ │138     0  161K │ fido.pochek.net, 4K_System, Moscow, Russia
2:5020/9696    │▐▌ │ ▌ │ ▌ │ █▐▐ ▐▌▌▌ ▌████▐██▐▐█▐▌▐██▐▌███▐█▌▐│256     0  794M │ skovpen.org, SDS, Moscow, Russia

[...]
╔══════════════════╦═══════════════════════════╦═════════╦═════════════╦══════╗
║                  ║      Sessions / Time      ║  Time   ║   Traffic   ║  CPS ║
║     Address      ╠═════════════╦═════════════╣ online  ╠══════╦══════╣ bytes║
║pwd               ║   Incoming  ║   Outgoing  ║ In+Out  ║ Rcvd ║ Sent ║ /sec ║
╠│═════════════════╬═══╤═════════╬═══╤═════════╬═════════╬══════╬══════╬══════╣
║√ 2:5020/101      ║ 43│ 0:02:10 ║234│ 0:13:11 ║ 0:15:21 ║  3.7K║202.2K║  1.2K║ n5020.ru, akf, Moscow, USSR                     
║√ 2:5020/113      ║ 28│ 0:04:49 ║  -│ -:--:-- ║ 0:04:49 ║ 14.9K║ 53.4K║   999║ Minas Anor, Moscow, Russia                      
║√ 2:5020/378      ║ 11│ 0:00:18 ║  -│ -:--:-- ║ 0:00:18 ║  2.4M║142.4K║191.8K║ 92.36.120.111, klug, Moscow, Russia             
║√ 2:5020/715.100  ║  2│ 0:00:03 ║  -│ -:--:-- ║ 0:00:03 ║     0║284.9K║ 94.9K║ FidoMailMobile, Zheleznodorozhny                
║√ 2:5020/830      ║  -│ -:--:-- ║ 50│ 0:03:26 ║ 0:03:26 ║299.6K║  1.2M║ 68.0K║ 830.ru, TITANIC Station IP, Moscow, Russia      
║√ 2:5020/1200     ║  4│ 0:09:09 ║  2│ 0:00:02 ║ 0:09:11 ║ 1290M║  5.7M║  2.3M║ MetNet Information Center, Moscow, Russia       
║√ 2:5020/1477     ║ 39│ 0:01:08 ║326│ 0:17:30 ║ 0:18:38 ║     0║333.1M║  1.7M║ m0d3m's_station, Moscow--Russia                 
║√ 2:5020/1668     ║  8│ 0:00:41 ║  -│ -:--:-- ║ 0:00:41 ║     0║ 90.1K║ 22.5K║ First Encounters/Binkp, CCCP, Moscow, Russia    
║√ 2:5020/3452     ║  -│ -:--:-- ║306│ 0:12:20 ║ 0:12:20 ║     0║ 55.3K║ 13.8K║ fido.babon.ru, Panzer station II, Moscow, Russia
║√ 2:5020/4096     ║ 19│ 0:00:19 ║119│ 0:10:40 ║ 0:10:59 ║     0║160.5K║  2.8K║ fido.pochek.net, 4K_System, Moscow, Russia      
║√ 2:5020/9696     ║  -│ -:--:-- ║256│ 0:18:03 ║ 0:18:03 ║     0║793.7M║  1.3M║ skovpen.org, SDS, Moscow, Russia                

[...]
╔════════════╤═════╤════════════════════╤══════════╤═════════════════╤════════╗
║  Session   │ Dir │      Address       │   Time   │     Traffic     │   CPS  ║
║   start    │     │pwd             abrt│  Online  │  Rcvd     Sent  │ bytes/s║
╠════════════╪═════╪│══════════════════│╪══════════╪════════╤════════╪════════╣
║  00:00:04  │ Out │√  2:301/1          │  0:00:12 │   5773 │      0 │    481 ║ fnthub.abad1dea.to, Bufferzone, Zug, Switzerlan
║  00:00:18  │ Out │   2:5020/5452     A│  0:00:01 │      0 │      0 │      0 ║ fido.huba715.ru, New World
║  00:00:18  │ Out │√  2:5001/100       │  0:00:01 │      0 │   1462 │   1.4K ║ f100.5001.ru, Postmortem, Kemerovo
║  00:00:18  │ Out │√  2:5051/44        │  0:00:01 │      0 │   1459 │   1.4K ║ fido.pdp11.ru, Digital, Simbirsk--Russia
║  00:06:03  │ Out │√  2:46/49          │  0:00:02 │      0 │   2207 │   1.0K ║ fidotallinn.ddns.net, EEStation, Tallinn, Estonia
║  00:05:52  │ Out │√  2:301/1         A│  0:00:43 │      0 │   5102 │    118 ║ fnthub.abad1dea.to, Bufferzone, Zug, Switzerlan
║  00:10:17  │ Out │√  2:5030/115       │  0:00:01 │      0 │    678 │    678 ║ f115.spb.ru, EdgeCity, St.Petersburg, Russia
║  00:09:40  │ Out │√  2:5020/2992     A│  0:01:07 │      0 │  11353 │    169 ║ 2992.mooo.com, Donskoy, Haifa, Israel
║  00:16:15  │ Out │√  2:6078/1         │  0:00:27 │      0 │  21312 │    789 ║ Techno Music BBS, Kaliningrad, Russia
║  00:16:37  │ Out │√  2:5030/1115      │  0:00:42 │      0 │  22459 │    534 ║ f1115.n5030.z2.binkp.net, EdgeCity II, St.Petersburg, Russia
║  00:17:24  │ Out │√  2:5020/4096      │  0:00:07 │      0 │  22448 │   3.1K ║ fido.pochek.net, 4K_System, Moscow, Russia
║  00:17:34  │ Out │√  2:5090/138       │  0:00:16 │      0 │  23130 │   1.4K ║ f138.n5090.krnet.ru, SkyStation, Krasnoyarsk--Russia
║  00:17:44  │ Out │√  2:5001/100       │  0:00:36 │      0 │  58762 │   1.5K ║ f100.5001.ru, Postmortem, Kemerovo, Russia

[...]

Не все мейлеры содержат в бинарных логах дополнительную информацию, которая может быть выведена в виде текста. Например, в бинарных логах мейлера Binkd такой информации нет. Если вы не задаёте описания к адресам в параметрах Addr, то создаваемая для Binkd статистика будет иметь ширину не более 80 символов даже в режиме широкого экрана.

Но некоторые из поддерживаемых мейлеров содержат в бинарных логах текстовую информацию о FTN-системах, с которыми проводились сессии, или информацию о протоколе соединения, или диагностические сообщения. К таким мейлерам относятся: qico 0.60.2+, Internet Rex, FrontDoor, Bink/+, FhMail, BinkleyTerm-XE, KittenMail, The Brake!, некоторые мейлеры с логами в формате T-Mail версии 2603 и новее, и мейлеры, использующими бинарные логи формата T-Hist. Для этих мейлеров текстовая информация будет выводиться в режиме широкого экрана.

Для управления режимом широкого экрана используется параметр WideScreen в конфигурационном файле или опция командной строки -w.

Конфигурационный файл. Параметры

Работа T-Hist и сопутствующих утилит управляется параметрами, находящимися в конфигурационном файле. По умолчанию, конфигурационный файл имеет имя t-hist.ctl и располагается в текущем каталоге. Для указания другого конфигурационного файла или запрета читать файл конфигурации используется опция командной строки -c.

Имена и значения всех параметров регистронезависимые за исключением имён файлов в Linux. Комментарии могут начинаться с символов # и ;. Для использования русского текста в комментариях и в параметрах, имеющих текстовые значения, используйте кодировку UTF-8.

Конфигурационный файл состоит из секций [COMMON] и [LINE]. В секции [COMMON] задаются общие для всех бинарных логов параметры. В секциях [LINE] задаются бинарные логи – по-одному на каждую секцию – и параметры, относящиеся только к этому логу.

Директивы [LINE] и [COMMON] могут присутствовать в конфигурационном файле многократно. Каждая новая директива [LINE] начинает описание нового бинарного лога. Каждая новая директива [COMMON] продолжает описание общих параметров.

Список параметров конфигурационного файла T-Hist по-алфавиту:

Addr, AdvancedCPS, BinkdAborted, BusyHist, CutHistory, Date, DecimalUnits, Group,
History, KeepAll, LinkStat, MiddLine, Name, NoDrawEmpty, Output, ProtectSummary,
SessionStat, ShowValue, SwapInOut, Time, TimeShift, WideScreen

(Параметр NoDrawEmpty в старых версиях назывался NoDrawZero.)

Параметры BrakeSesStat и SupportNewFormat, использовавшиеся в старых версиях, считаются устаревшим и игнорируются при чтении конфигурационного файла.

Подробное описание всех параметров приведено в примере конфигурационного файла t-hist.ctl.

Параметры History и Name можно использовать только в секциях [LINE]. Параметры AdvancedCPS, BinkdAborted, BusyHist, CutHistory, SwapInOut и TimeShift можно использовать как в секциях [LINE], так и в секции [COMMON]. Все остальные параметры можно использовать только в секции [COMMON].

Если параметр можно использовать и в секциях [LINE], и в секции [COMMON], то значение этого параметра, заданное в секции [COMMON], применяется к тем бинарным логам, для которых этот параметр не был задан в секции [LINE].

Если параметр не задан ни в конфигурационном файле, ни через опцию командной строки, то он получит значение по умолчанию, приведённое в следующей таблице:

Параметр Значение по умолчанию
Output t-hist.out
LinkStat t-hist.lnk
SessionStat t-hist.ses
Date сегодняшняя дата
Time 0:00:00-23:59:59
TimeShift 0
CutHistory 0 (не обрезать лог)
Name пустая строка
Addr *:*/*.*
BinkdAborted In
ShowValue Ses
AdvancedCPS, BusyHist, Group,
WideScreen
Yes
DecimalUnits, KeepAll,
MiddLine, NoDrawEmpty,
ProtectSummary,SwapInOut,
No

Часть параметров могут быть заданы без указания их значения. Список таких параметров и значения, которые им присваиваются если они заданы без значения, приведены в следующей таблице:

Допустимо задавать
без значения
Значение, которое будет
использоваться
Date сегодняшняя дата
Time 0:00:00-23:59:59
TimeShift Auto
Name пустая строка
Addr *:*/*.*
AdvancedCPS, BusyHist,
DecimalUnits, Group, KeepAll,
MiddLine, NoDrawEmpty,
ProtectSummary, SwapInOut,
WideScreen
Yes

Правила задания и обработки адресов

FTN-адреса, для которых создаётся статистика, задаются с помощью параметров Addr и опций командной строки -a. Формат параметра:

Addr <address> ["<description>"]

где

Каждое из полей адреса <Zone>, <Net>, <Node>, <Point> – либо целое число от 0 до 32767 включительно, либо символ подстановки *, либо пусто.

Группы адресов

Использование хотя бы одного символа подстановки * при задании адреса делает этот адрес группой. Для каждого адреса из бинарного лога, который соответствует хотя бы одной заданной группе, будет создана строка таблицы линков и строка графика. Также сессии с этим адресом будут учтены в групповой статистике для этой группы в таблице групп и на графике для групп.

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

Любое из полей <Zone>, <Net>, <Node>, <Point> может быть пропущено. Отсутствующие поля автоматически заменяются на символы подстановки *, и адрес с пропущенными полями становится группой. Например,

Задано Будет использовано
Addr 2:5020/378 Addr 2:5020/378.*
Addr 2:5020 Addr 2:5020/*.*
Addr 2: Addr 2:*/*.*
Addr 2:5020.378 Addr 2:5020/*.378
Addr 2:/378 Addr 2:*/378.*
Addr 2:/.378 Addr 2:*/*.378
Addr 2:.378 Addr 2:*/*.378
Addr :5020/378 Addr *:5020/378.*
Addr :5020.378 Addr *:5020/*.378
Addr :5020 Addr *:5020/*.*
Addr 5020/ Addr *:5020/*.*
Addr 5020/378 Addr *:5020/378.*
Addr 5020.378 Addr *:*/5020.378
Addr /378.0 Addr *:*/378.0
Addr 378.0 Addr *:*/378.0
Addr 378 Addr *:*/378.*
Addr :/. Addr *:*/*.*
Addr :/ Addr *:*/*.*
Addr :. Addr *:*/*.*
Addr /. Addr *:*/*.*
Addr : Addr *:*/*.*
Addr / Addr *:*/*.*
Addr . Addr *:*/*.*
Addr Addr *:*/*.*

Если в конфигурационном файле не задано ни одного параметра Addr, то при генерации статистики будет использована группа по умолчанию Addr *:*/*.* (или, что то же самое, Addr All), охватывающая все адреса.

Исключение адресов из статистики

Можно исключать определенные адреса и группы адресов из статистики. Для этого перед адресом нужно поставить символ !. Например:

Предопределённые имена адресов и групп

Существуют предопределённые имена адресов и групп адресов, которые можно использовать в параметрах Addr и опциях командной строки -a (имена регистронезависимые):

Группа Failed включает в себя адреса Unresolved, Undefined, Unknown, None.

Для получения статистики только по неудачным сессиям (оборванным сессиям с известными адресами и сессиям с неопределённым из-за неудачного хэндшейка адресом) используйте единственный параметр Addr Failed в конфигурационном файле или единственную опцию командной строки -afailed при работе без конфигурационного файла.

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

Addr All
Addr Failed

Если наоборот нужно исключить все неудачные сессии из статистики, используйте вариант:

Addr !Failed
Addr All

Автоматическая сортировка адресов и групп перед созданием статистики

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

Addr 2:5020/*.*
Addr 2:5020/378.0
Addr *:*/*.*
Addr 2:5020/378.0
Addr 2:*/*.*
Addr 2:5020/1132.0
Addr 2:5020/408.0
Addr !2:5020/1132.*
Addr Failed
Addr !*:*/*.666
Addr 2:5020/715.*
Addr All
Addr 2:5020/1132.0
Addr !2:5020/408.0

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

Addr !2:5020/408.0
Addr !2:5020/1132.*
Addr !*:*/*.666
Addr 2:5020/378.0
Addr 2:5020/715.*
Addr 2:5020/*.*
Addr 2:*/*.*
Addr All
Addr Failed

Алгоритм просмотра списка адресов во время создания статистики

Во время создания статистики для каждой прочитанной из бинарного лога сессии производится просмотр отсортированного списка адресов от начала к концу. Если адрес совпадёт с исключаемым из статистики, просмотр прекратится, и сессия будет проигнорирована. Иначе для каждого заданного параметрами Addr или опциями -a адреса, с которым совпадёт прочитанный из бинарного лога адрес, будет добавлена информация об обрабатываемой сессии. После совпадения с неисключаемым адресом процесс не прерывается, и список адресов продолжает просматриваться до конца. Это позволяет учесть обрабатываемую сессию сразу в нескольких групповых статистиках. Например, для списка адресов:

Addr !2:5020/1132.0
Addr 2:5020/378.0
Addr 2:5020/*.*
Addr 2:*/*.*
Addr All
Addr Failed

все сессии с адресом 2:5020/378.0 будут учтены не только в отдельной статистике для этого адреса, но и в групповой статистике сессий с адресами из сети 2:5020, в групповой статистике сессий с адресами из второй зоны и в групповой статистике сессий с любыми адресами. Кроме того, неудачные сессии с адресом 2:5020/378.0 будут отдельно учтены в групповой статистике неудачных сессий. А сессии с адресом 2:5020/1132.0 будут полностью игнорироватся.

Командная строка

Формат командной строки и правила обработки

Помимо конфигурационного файла, бинарные логи и параметры их обработки могут быть заданы в командной строке. Формат командной строки T-Hist следующий:

t-hist [option]... [binary-log]...

Здесь binary-log – имя файла бинарного лога, option – опция командной строки. Может быть задано несколько имён файлов бинарных логов, в том числе и ни одного. Опций так же может быть несколько, в том числе и ни одной. Порядок указания опций и имён бинарных логов неважен – они могут располагаться в командной строке в любом порядке.

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

Для получения списка опций любой из утилит проекта T-Hist используется одна из опций: -h, --help, -help, -?.

Опции командной строки T-Hist

Почти все опции командной строки T-Hist соответствуют параметрам конфигурационного файла. Если какой-либо из параметров задан и в конфигурационном файле, и с помощью соответствующей опции командной строки, то при обработке всех бинарных логов будет использоваться значение из командной строки. Исключением из этого правила являются параметр Addr и соответствующая ему опция -a: адреса, заданные в командной строке, не переопределяют адреса из параметров Addr конфигурационного файла, а дополняют их.

При задании опций не должно быть пробелов между символом опции и значением. Например, если нужно с помощью некоторой опции -x задать значение <val>, то правильным вариантом будет -x<val>, а вариант -x <val> будет ошибочным.

Работа без конфигурационного файла

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

Существует возможность запретить утилитам читать конфигурационный файл t-hist.ctl даже если он присутствует в текущем каталоге. Для этого используется опция командной строки -c с пустым значением или со значением -. Например,

t-hist /var/log/fido/binlog1.dat /var/log/fido/binlog2.dat -с
                        # для бинарных логов /var/log/fido/binlog1.dat и
                        # /var/log/fido/binlog2.dat создать статистику
                        # за период времени 0:00:00-23:59:59 текущих суток,
                        # используя значения параметров по умолчанию

t-hist -с /var/log/fido/binkd.sts,0,1 -d-1 -t0-8 -r -bT -e
                        # для бинарного лога /var/log/fido/binkd.sts мейлера Binkd,
                        # выполняющего только исходящие сессии, создать статистику
                        # за период времени от 0 до 8 часов предыдущих суток;
                        # при выводе значений трафика использовать единицы измерения,
                        # основанные на десятичных степенях; после графика строить
                        # только гистограмму общей загрузки; не создавать файл со
                        # статистикой сессий

t-hist /var/log/fido/binlog.dat -с- -d31.-1 -o -afailed
                        # для бинарного лога /var/log/fido/binlog.dat создать статистику
                        # только неудачных сессий, которые происходили в последний день
                        # предыдущего месяца, при этом не создавать файл с графиком
                        # загрузки и гистограммами

(В приведённых примерах опцию -c, -c- можно не указывать, если в текущем каталоге, где запущен T-Hist, нет файла t-hist.ctl.)

Собственный формат бинарных логов

Недостатком форматов бинарных логов всех мейлеров, поддерживаемых старыми версиями T-Hist, является использование 32-битных величин для записи информации о количестве отправленных и полученных байт. В таких бинарных логах невозможно корректно сохранить информацию о трафике, если во время сессии было отправлено или получено более 4 гигабайт.

Форматы бинарных логов этих мейлеров разрабатывались в эпоху dial-up, когда передать более 4 гигабайт за одну сессию было практически нереально. Но в эпоху Fido-over-IP и высокоскоростных сетей сессия с трафиком более 4 гигабайт – обычное явление, особенно на крупных раздающих хабах.

В новых версиях T-Hist и сопутствующих утилит реализована поддержка нескольких версий собственного формата бинарных логов с 64-битными значениями трафика и отметками времени. Разработчикам FTN-мейлеров предлагается использовать бинарные логи собственного формата T-Hist в своих программных продуктах. Помимо корректного сохранения данных о сессиях с большими объёмами трафика, формат позволяет сохранять текстовые строки с информацией о FTN-системах и/или с диагностическими сообщениями, которые могут быть выведены в статистике в режиме широкого экрана. Также формат T-Hist позволяет записывать в бинарный лог отметку Listed для сессий, FTN-адреса которых присутствуют в нодлистах, указанных в конфигурации мейлера. Подробно все версии собственного формата бинарных логов T-Hist рассмотрены в файле FORMATS-ru.md, находящемся в каталоге doc.

Бинарный лог формата T-Hist использует мейлер qico by Alexey Matrosov (2:203/910), начиная с версии 0.60.2.

Существует возможность добавить поддержку бинарного лога формата T-Hist к мейлеру Binkd. При этом "родной" бинарный лог Binkd затронут не будет: новый бинарный лог будет записываться одновременно с "родным". Для добавления к Binkd поддержки бинарного лога формата T-Hist используйте один из патчей, находящихся в каталоге binkd_patch. Подробнее об этих патчах и алгоритме их применения читайте в файле BINKD-PATCH-ru.md.

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

Особенности обработки бинарных логов некоторых мейлеров

T-Mail до версии 2603 (старый формат бинарных логов T-Mail)

С обработки бинарных логов старого формата T-Mail началась в 1996 году история T-Hist. Бинарные логи этого формата не содержат информацию о том, удачно ли завершилась сессия или была оборвана, и была ли сессия защищена паролем или нет. Также в этих логах нет какой-либо дополнительной текстовой информации. Поэтому для логов старого формата T-Mail:

Поддерживается возможность обрезания бинарных логов при ненулевом значении параметра CutHistory.

Binkd

Бинарные логи мейлера Binkd – это особый случай бинарных логов старого формата T-Mail. Структура записей в логах Binkd полностью совпадает со структурой записей в логах T-Mail до версии 2603, но есть отличия в отметках статуса сессий:

Эти особенности требуют придерживаться следующих правил при задании бинарного лога Binkd в конфигурационном файле:

В статистике сессий для бинарных логов Binkd будут выводиться отметки оборванных/неудачных сессий, но не будет отметок парольных сессий. Гистограммы для парольных и непарольных сессий также строиться не будут независимо от значения параметра BusyHist.

Поддерживается возможность обрезания бинарных логов при ненулевом значении параметра CutHistory.

T-Mail версии 2603 и новее (новый формат бинарных логов T-Mail)

Бинарные логи нового формата T-Mail содержат отметки оборванных/неудачных сессий и отметки парольных сессий, поэтому для таких бинарных логов:

Поддерживается возможность обрезания бинарных логов при ненулевом значении параметра CutHistory.

Помимо T-Mail, существуют и другие мейлеры, использующие этот формат бинарных логов. В частности, это мейлеры Argus, DVMmail, X-Mail32, BasicMail. Некоторые из мейлеров используют новый формат T-Mail "расширенно", сохраняя в бинарном логе текстовую информацию о FTN-системах, с которыми проводились сессии (сам T-Mail этого не делает). Эта текстовая информация, в случае её наличия, будет выводиться в статистике в режиме широкого экрана.

qico 0.60.2+

Мейлер qico, начиная с версии 0.60.2, использует бинарный лог третьей версии собственного формата T-Hist, обеспечивающий максимальный набор возможностей при создании статистики:

KittenMail

Бинарные логи мейлера KittenMail содержат отметки оборванных/неудачных сессий и отметки парольных сессий. Кроме того, в этих логах содержится информация о протоколе соединения. Для логов KittenMail:

Поддерживается возможность обрезания бинарных логов при ненулевом значении параметра CutHistory.

BinkleyTerm-XE

Бинарные логи мейлера BinkleyTerm-XE содержат отметки оборванных/неудачных сессий и отметки парольных сессий. Кроме того, в этих логах содержится текстовая информация о FTN-системах, с которыми проводились сессии (тип хэндшейка, имя системы, её локация, используемый мейлер, имя сисопа, номер телефона). Для логов BinkleyTerm-XE:

Обрезание бинарных логов BinkleyTerm-XE не поддерживается, параметр CutHistory для них игнорируется.

Bink/+

Бинарные логи мейлера Bink/+ состоят из двух файлов:

В параметре History при задании бинарных логов Bink/+ следует указывать только один из этих файлов (любой). После обработки первого файла T-Hist автоматически будет пытаться открыть второй файл. Имена у файлов (без расширений) должны совпадать, а расширения должны быть .ihs и .ohs. Только исходя из расширения у файла бинарного лога T-Hist определяет направление обрабатываемых сессий.

В бинарных логах Bink/+ есть отметки парольных сессий, но нет отметок оборванных/неудачных сессий. Также в этих логах содержится текстовая информация об именах FTN-систем, с которыми проводились сессии, и их локациями. Для логов Bink/+:

Обрезание бинарных логов Bink/+ не поддерживается, параметр CutHistory для них игнорируется.

FhMail

Формат бинарных логов мейлера FhMail совместим с форматом логов Bink/+. Так же, как и у Bink/+, эти логи состоят из двух файлов. Чтобы T-Hist мог их корректно обрабатывать, необходимо, чтобы их расширения были такими же, как у логов Bink/+, то есть .ihs для входящих сессий и .ohs для исходящих сессий. Всё, сказанное про логи мейлера Bink/+, справедливо и для бинарных логов FhMail.

Internet Rex

Бинарные логи мейлера Internet Rex имеют формат бинарных логов мейлера FrontDoor (о котором будет сказано ниже) и состоят из двух файлов: бинарный лог для входящих сессий и бинарный лог для исходящих сессий. Чтобы T-Hist мог корректно их обрабатывать, файлы должны иметь расширения .ihs для входящих сессий и .ohs для исходящих сессий. В параметре History при задании бинарных логов Internet Rex следует указывать только один из этих файлов (любой). После обработки первого файла T-Hist автоматически будет пытаться открыть второй файл.

В логах Internet Rex есть отметки оборванных/неудачных сессий, но нет отметок парольных сессий. Также в этих логах содержится текстовая информация об именах FTN-систем, с которыми проводились сессии, и их локациями. Для логов Internet Rex:

Обрезание бинарных логов Internet Rex не поддерживается, параметр CutHistory для них игнорируется.

FrontDoor

Всё, сказанное про бинарные логи мейлера Internet Rex, справедливо и для мейлера FrontDoor, за исключением одной особенности. Бинарные логи FrontDoor всегда имеют имена inbound.his и outbound.his, но T-Hist сможет корректно их обработать только если их расширения будут .ihs для входящих сессий и .ohs для исходящих сессий, а имена без расширений будут совпадать. Поэтому перед обработкой файлы логов FrontDoor необходимо переименовать. В остальном всё, сказанное про логи мейлера Internet Rex, справедливо и для бинарных логов FrontDoor.

The Brake!

T-Hist поддерживает формат бинарных логов мейлера The Brake! версии 718Alfa7 и более новых. В этих логах нет ни отметок оборванных/неудачных сессий, ни отметок парольных сессий, но есть информация о типе хэндшейка и протоколе соединения. Для логов The Brake!:

Обрезание бинарных логов The Brake! не поддерживается, параметр CutHistory для них игнорируется.

Помимо записей о сессиях, бинарные логи The Brake! содержат также записи о периодах ответа на звонки, набора номера, работы в терминале, вызовах BBS, запуска внешних программ. Старые версии T-Hist могли отображать эти периоды в статистике сессий, статистике линков и на графике, учитывали при построении общей гистограммы загрузки и при расчёте процента загрузки FTN-системы. Более подробно об этом читайте в старом файле документации t-hist-old.txt от версии 0.30.alpha7.

В новые версиях T-Hist обработка записей об этих событиях и отображение их в статистике выполнялось в версиях 1.0.0 – 1.7.0. Начиная с версии T-Hist 1.8.0, при обработке бинарных логов The Brake! учитываются только записи о сессиях. Записи о всех других событиях пропускаются.

Утилита LnkStat для создания многодневной статистики линков

В состав пакета T-Hist входит утилита LnkStat, предназначенная для создания многодневной статистики линков. В отличие от T-Hist, который создаёт статистику для интервалов времени, не превышающих 24 часа, LnkStat создаёт статистику для диапазона дат, заданного опциями командной строки (по умолчанию: для диапазона дат всех сессий с заданными адресами, прочитанных из обрабатываемых бинарных логов – от даты самой старой сессии до даты самой новой сессии включительно).

Результатом работы LnkStat является таблица, аналогичная таблице статистики линков, формируемой T-Hist. Различия лишь в ширине некоторых столбцов и в отсутствии у LnkStat отметок парольных и Listed линков. По умолчанию, LnkStat выводит статистику в stdout, но можно с помощью опции командной строки -o указать имя файла для вывода статистики.

Ниже приведён пример фрагмента многодневной статистики линков, полученных с помощью утилиты LnkStat на узле Alex Barinov (2:5020/715).

                   From: 00:05:07, 07 September 2026, Monday
                   To  : 00:05:15, 14 September 2026, Monday
╔════════════════╦═════════════════════════════╦═════════╦═════════════╦══════╗
║                ║       Sessions / Time       ║  Time   ║   Traffic   ║  CPS ║
║    Address     ╠══════════════╦══════════════╣ online  ╠══════╦══════╣ bytes║
║                ║   Incoming   ║   Outgoing   ║ In+Out  ║ Rcvd ║ Sent ║ /sec ║
╠════════════════╬════╤═════════╬════╤═════════╬═════════╬══════╬══════╬══════╣
║ 2:5020/101     ║ 336│ 0:05:36 ║ 373│ 0:06:13 ║ 0:11:49 ║   747║570.4K║  2.7K║
║ 2:5020/113     ║ 193│ 0:03:31 ║   -│ -:--:-- ║ 0:03:31 ║109.1K║337.8K║  6.4K║
║ 2:5020/378     ║  59│ 0:01:28 ║   -│ -:--:-- ║ 0:01:28 ║   518║526.4K║  8.4K║
║ 2:5020/715.100 ║  60│ 0:01:04 ║   -│ -:--:-- ║ 0:01:04 ║  4.2K║651.8K║ 21.8K║
║ 2:5020/830     ║   -│ -:--:-- ║ 160│ 0:02:42 ║ 0:02:42 ║     0║415.5K║  6.2K║
║ 2:5020/1200    ║  28│ 0:04:08 ║  52│ 0:00:55 ║ 0:05:03 ║822.5M║  3.1M║  3.0M║
║ 2:5020/1477    ║ 336│ 0:05:36 ║ 104│ 0:02:02 ║ 0:07:38 ║     0║261.8M║  3.4M║
║ 2:5020/1668    ║  61│ 0:05:04 ║   -│ -:--:-- ║ 0:05:04 ║     0║357.6K║  2.3K║
║ 2:5020/3452    ║   -│ -:--:-- ║ 103│ 0:01:43 ║ 0:01:43 ║     0║274.4K║  4.7K║
║ 2:5020/4096    ║ 167│ 0:02:47 ║ 332│ 0:05:32 ║ 0:08:19 ║     0║589.3K║  3.3K║
║ 2:5020/9696    ║   3│ 0:00:04 ║ 689│ 0:20:06 ║ 0:20:10 ║     0║504.9M║481.8K║

[...]

Так же, как и T-Hist, утилита LnkStat может работать в режиме широкого экрана, выводя справа от строк таблицы текстовую информацию из бинарных логов или описания адресов из параметров Addr.

По умолчанию, LnkStat использует тот же конфигурационный файл t-hist.ctl, что и сам T-Hist. Из парамеров конфигурационного файла для LnkStat имеют значение:

History, Addr, AdvancedCPS, BinkdAborted, DecimalUnits,
Group, KeepAll, SwapInOut, TimeShift, WideScreen

Все остальные параметры игнорируются.

Формат командной строки LnkStat и правила её обработки такие же, как у T-Hist. Опции командной строки LnkStat позволяют задать:

Далее рассмотрим все опции утилиты LnkStat.

Примеры использования LnkStat:

lnkstat -b5 -e20
                        # создать статистику за период с 5 по 20 число текущего месяца
                        # для всех бинарных логов, указанных в конфигурационном файле
                        # t-hist.ctl

lnkstat -b5.10.2026 -d10
                        # создать статистику за 10 дней, начиная с 5.10.2026, для всех
                        # бинарных логов, указанных в конфигурационном файле t-hist.ctl

lnkstat -b-10
                        # создать статистику за последние 10 дней для всех бинарных логов,
                        # указанных в конфигурационном файле t-hist.ctl

lnkstat -b1.-1 -e31.-1
                        # создать статистику за предыдущий месяц для всех бинарных логов,
                        # указанных в конфигурационном файле t-hist.ctl

lnkstat -b1.-1 -d10
                        # создать статистику за первые 10 дней предыдущего месяца для всех
                        # бинарных логов, указанных в конфигурационном файле t-hist.ctl

lnkstat -d100
                        # создать статистику за первые 100 дней, начиная с даты самой
                        # первой сессии с адресами, указанными в параметрах Addr
                        # в конфигурационном файле t-hist.ctl

lnkstat /var/log/fido/binlog.dat -с -o/home/user/fido/lnkstat.txt -a2:5020/378.0 -u-
                        # игнорируя конфигурационный файл, создать статистику по всем
                        # сессиям с адресом 2:5020/378.0, записанным в бинарный лог
                        # /var/log/fido/binlog.dat, и сохранить статистику в файл
                        # /home/user/fido/lnkstat.txt в кодировке ASCII 7bit

lnkstat /var/log/fido/binlog.dat -с -b0
                        # игнорируя конфигурационный файл, создать статистику за текущие
                        # сутки для бинарного лога /var/log/fido/binlog.dat (вместо '-b0'
                        # с тем же результатом можно использовать просто '-b')

В последнем примере статистика создаётся только за одни сутки, что эквивалентно использованию T-Hist со следующими опциями:

t-hist /var/log/fido/binlog.dat -с -o -e
                        # создать за текущие сутки только статистику линков,
                        # а статистику сессий и график с гистограммами не создавать

Дампер бинарных логов DmpHist

В состав пакета T-Hist входит утилита DmpHist, которая для каждого обрабатываемого бинарного лога выводит в stdout все его записи в виде таблицы, содержащей:

Перед таблицей выводится имя бинарного лога и его формат. После таблицы выводится расшифровка битов статуса сессий.

Ниже приведён пример фрагмента дампа бинарного лога мейлера Binkd, полученного с помощью утилиты DmpHist на узле Alex Barinov (2:5020/715).

File   : /var/log/fido/binkd.sts
Format : Binkd (T-Mail old)
┌───────────────────┬──────────────────────────┬───────┬────────┬────────┬────┐
│      Address      │     Session timestamp    │Time(s)│Received│  Sent  │PNOI│
├───────────────────┼──────────────────────────┼───────┼────────┼────────┼────┤
│ 2:5095/20.0       │ Thu Aug  6 06:00:01 2026 │     0 │      0 │      0 │0010│
│ 2:5020/570.0      │ Thu Aug  6 06:00:02 2026 │     4 │   1289 │      0 │0010│
│ 2:5020/1146.0     │ Thu Aug  6 06:00:07 2026 │     1 │      0 │   1273 │0001│
│ 2:5001/100.0      │ Thu Aug  6 06:00:07 2026 │    13 │      0 │   1275 │0001│
│ 2:5020/290.0      │ Thu Aug  6 06:00:11 2026 │    12 │      0 │      0 │0010│
│ 0:0/0.0           │ Thu Aug  6 05:59:58 2026 │    57 │      0 │      0 │0011│
│ 2:5020/921.0      │ Thu Aug  6 06:01:02 2026 │     3 │      0 │      0 │0010│

[...]

│ 2:463/68.0        │ Fri Aug  7 00:15:39 2026 │     1 │   2323 │      0 │0010│
│ 2:5051/44.0       │ Fri Aug  7 00:15:41 2026 │     0 │      0 │   2328 │0001│
│ 2:5019/40.0       │ Fri Aug  7 00:15:46 2026 │     0 │      0 │      0 │0010│
└───────────────────┴──────────────────────────┴───────┴────────┴────────┴────┘
               Password protected session; not all mailers mark it ───────┘│││
               No-error session (not aborted); not all mailers mark it ────┘││
                                                      Outgoing session ─────┘│
                                                      Incoming session ──────┘

Утилита DmpHist выводит информацию о сессиях в сыром виде, без какой либо дополнительной обработки. В частности:

Бит статуса Listed выводится только для тех форматов бинарных логов, которые поддерживают этот бит (все версии собственного формата T-Hist).

Так же, как T-Hist и LnkStat, утилита DmpHist может работать в режиме широкого экрана, выводя справа от строк таблицы текстовую информацию из бинарных логов, если она есть.

По умолчанию, DmpHist использует тот же конфигурационный файл t-hist.ctl, что и сам T-Hist. В конфигурационном файле для DmpHist имеют значение только три параметра:

History, DecimalUnits, WideScreen

Все остальные параметры игнорируются.

Формат командной строки DmpHist и правила её обработки такие же, как у T-Hist. Опции командной строки утилиты DmpHist следующие:

Конвертер форматов бинарных логов HistConv

Конвертер форматов бинарных логов HistConv позволяет для заданного бинарного лога создать такой же лог в другом формате. Утилита не использует конфигурационный файл. Имена исходного и целевого бинарных логов и целевой формат задаются в командной строке:

histconv [option] source_file target_file

В качестве исходного может быть указан файл бинарного лога любого мейлера, поддерживаемого T-Hist. Его формат будет определён автоматически. Для выбора целевого формата используется опция командной строки -f <format>, где <format> – строка с именем формата. Допустимые целевые форматы бинарных логов и соответствующие им имена для опции -f следующие:

Если целевой формат не указан с помощью опции -f, то бинарный лог будет сконвертирован в третью версию формата T-Hist.

Все имена форматов регистронезависимые. Имена можно указывать как с пробелами между -f и именем, так и без пробелов. Иначе говоря, корректными будут оба следующих варианта: -f t-hist и -fTHist.

Перед началом конвертации утилита HistConv выводит информацию о формате исходного бинарного лога и о целевом формате.

Во время конвертации в целевой бинарный лог сохраняются только записи о сессиях. Записи о других событиях, которые могут присутствовать в бинарных логах некоторых мейлеров (например, записи о периодах набора номера, работе в терминале, запусках BBS и т.п.) пропускаются.

После завершения конвертации утилита HistConv выводит число прочитанных из исходного бинарного лога записей, число записей, сохранённых в целевом бинарном логе, и длину одной записи в целевом бинарном логе. Если целевой формат использует записи переменной длины, то выводится средняя длина записи.

Благодарности

Выражаю благодарность Andy Elkin (2:5030/15) за мейлер T-Mail; Slawa Olhovchenkov (2:5030/57.570) и Jury Fradkin (2:5030/339) за T-Mail API; Mikel Lavrentyev (2:5020/35) за утилиту bink/+ links statistics utility, послужившую прообразом для оформления графика загрузки; John Gladkih (2:5051/16) за исходники работы с бинарным логом The Brake!; Eugine Tukin (2:5020/324) за утилиту BTSV, послужившую прообразом для оформления статистики линков; Alex Barinov (2:5020/715) за тестирование новых версий T-Hist на своём узле; Alexey Matrosov (2:203/910) за предложения по формату бинарных логов, помощь в обработке значений времени и новые идеи для T-Hist; а также всех, чьи идеи, предложения и помощь в разработке и тестировании позволили создать и развивать этот проект.


Copyright (c) 2026 Mikhail Markovskiy (klug) 2:5020/378. All rights reserved.