Скрипт подсчет времени работы пользотвалей по VPN

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
N1ghtmare
Сообщения: 4
Зарегистрирован: 25 сен 2020, 15:57

Подскажите пожалуйста можно ли сделать какой-то скрипт подсчета времени коннекта пользователей по VPN?
К примеру есть 10 сотрудников которые подключаются из дома к микротику, и когда отключаются чтобы в логе была запись такой-то пользователь отключился время работы 5 часов.


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Конечно можно. Вам под заказ ? Тогда милости просим в личку.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ca6ko
Сообщения: 1484
Зарегистрирован: 23 ноя 2018, 11:08
Откуда: Харкiв

N1ghtmare писал(а): 25 сен 2020, 16:03 время работы 5 часов.
Время работы микротик подсчитать не может, только время в течении которого было подключение. А наличие активного подключения не означает что сотрудник в это время работал :a_g_a: То есть микротик может выдать только статистику подключений.


1-е Правило WiFi - Везде где только можно откажитесь от WiFi!
2-е Правило WiFi -Устройство, которое пользователь не носит с собой постоянно, должно подключаться кабелем!!

Микротики есть разные: черные, белые, красные. Но все равно хочется над чем нибудь заморочится.
N1ghtmare
Сообщения: 4
Зарегистрирован: 25 сен 2020, 15:57

Ca6ko писал(а): 25 сен 2020, 16:33
N1ghtmare писал(а): 25 сен 2020, 16:03 время работы 5 часов.
Время работы микротик подсчитать не может, только время в течении которого было подключение. А наличие активного подключения не означает что сотрудник в это время работал :a_g_a: То есть микротик может выдать только статистику подключений.
Это я понял, как раз и нужна статистика сколько кто сидел в течении дня, 2-3-4 часа. ))) То что в это время чаек пьют понятно)))

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

Вроде задача не сложная а выше уже сразу денежку просят))) я еще из эры динозавров так у нас был интернет для обмена знаниями)))


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Если для дела, то можно и за денежку ... :-)
Подсказать немножко можем бесплатно. В ppp-профиль можно вставить скрипт, можно отлавливать подключение vpn-пользователя из скрипта в Планировщике.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ca6ko
Сообщения: 1484
Зарегистрирован: 23 ноя 2018, 11:08
Откуда: Харкiв

У каждого сотрудника должен быть настроен свой отдельный профиль подключения.


1-е Правило WiFi - Везде где только можно откажитесь от WiFi!
2-е Правило WiFi -Устройство, которое пользователь не носит с собой постоянно, должно подключаться кабелем!!

Микротики есть разные: черные, белые, красные. Но все равно хочется над чем нибудь заморочится.
N1ghtmare
Сообщения: 4
Зарегистрирован: 25 сен 2020, 15:57

Ca6ko писал(а): 25 сен 2020, 16:48 У каждого сотрудника должен быть настроен свой отдельный профиль подключения.
Уже настроены профили и работают)


N1ghtmare
Сообщения: 4
Зарегистрирован: 25 сен 2020, 15:57

Sertik писал(а): 25 сен 2020, 16:41 Если для дела, то можно и за денежку ... :-)
Подсказать немножко можем бесплатно. В ppp-профиль можно вставить скрипт, можно отлавливать подключение vpn-пользователя из скрипта в Планировщике.
я увидел что в профиле есть на UP и DOWN возможность выполнения скрипта, вопрос в самом скрипте, я вас понял буду разбираться. Давненько на форумы не обращался и слегка удивлен .... скоро за подскажите сколько времени тоже будут денежку просить :)


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Да нет, за подскажите мы не просим. Если нужен готовый скрипт чтобы не мучаться - тогда за денежку.
Мне тоже готового никто не даёт. :-) (Ну или только по дружбе) :-)


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
dangem
Сообщения: 2
Зарегистрирован: 16 ноя 2021, 16:52

У меня получилось вот так:
 
Отдельные скрипты для PPP-UP и PPP-down
Коннект

:local callerId
:local calledId
:set callerId $"caller-id"
:set calledId $"called-id"
:local datetime [/system clock get date]
:local time [/system clock get time]
:log warn "$datetime $time Connected user: $user $callerId";


:global Logins
:global Times

:if ([:typeof $Logins] != "array") do={
:set Logins {""}
:for i from=0 to=($Quant-1) do={:set ($Logins->$i) 1}
}

:if ([:typeof $Times] != "array") do={
:set Times {""}
:for i from=0 to=($Quant-1) do={:set ($Times->$i) 1}
}


:local pos
:set $pos ([find key=$user in=$Logins ])
#proveryaem nashlos li vhozgdenie
:if ( $pos=[] ) do={
:set $pos ([:len $Logins]+1)
:set ($Logins->$pos) $user;
}


:local time1
:local EpochTime do={
:local ds [/system clock get date];
:local months;
:if ((([:pick $ds 9 11]-1)/4) != (([:pick $ds 9 11])/4)) do={
:set months {"an"=0;"eb"=31;"ar"=60;"pr"=91;"ay"=121;"un"=152;"ul"=182;"ug"=213;"ep"=244;"ct"=274;"ov"=305;"ec"=335};
} else={
:set months {"an"=0;"eb"=31;"ar"=59;"pr"=90;"ay"=120;"un"=151;"ul"=181;"ug"=212;"ep"=243;"ct"=273;"ov"=304;"dec"=334};
}
:set ds (([:pick $ds 9 11]*365)+(([:pick $ds 9 11]-1)/4)+($months->[:pick $ds 1 3])+[:pick $ds 4 6]);
:local ts [/system clock get time];
:set ts (([:pick $ts 0 2]*60*60)+([:pick $ts 3 5]*60)+[:pick $ts 6 8]);
:return ($ds*24*60*60 + $ts + 946684800 - [/system clock get gmt-offset]);
}
:set $time1 [$EpochTime]

:set ($Times->$pos) $time1;

#:log warn "$Logins"
#:log warn "$Times"
#:log warn "$pos"

Дисконнект

:local callerId
:local calledId
:set callerId $"caller-id"
:set calledId $"called-id"
:local datetime [/system clock get date]
:local time [/system clock get time]


:global Logins
:global Times


:if ([:typeof $Logins] != "array") do={
:set Logins {""}
:for i from=0 to=($Quant-1) do={:set ($Logins->$i) 1}
}

:if ([:typeof $Times] != "array") do={
:set Times {""}
:for i from=0 to=($Quant-1) do={:set ($Times->$i) 1}
}


:local pos;
:set $pos ([find key=$user in=$Logins ]);


:local time1;
:local time2;
:local dtime;
:local EpochTime do={
:local ds [/system clock get date];
:local months;
:if ((([:pick $ds 9 11]-1)/4) != (([:pick $ds 9 11])/4)) do={
:set months {"an"=0;"eb"=31;"ar"=60;"pr"=91;"ay"=121;"un"=152;"ul"=182;"ug"=213;"ep"=244;"ct"=274;"ov"=305;"ec"=335};
} else={
:set months {"an"=0;"eb"=31;"ar"=59;"pr"=90;"ay"=120;"un"=151;"ul"=181;"ug"=212;"ep"=243;"ct"=273;"ov"=304;"dec"=334};
}
:set ds (([:pick $ds 9 11]*365)+(([:pick $ds 9 11]-1)/4)+($months->[:pick $ds 1 3])+[:pick $ds 4 6]);
:local ts [/system clock get time];
:set ts (([:pick $ts 0 2]*60*60)+([:pick $ts 3 5]*60)+[:pick $ts 6 8]);
:return ($ds*24*60*60 + $ts + 946684800 - [/system clock get gmt-offset]);
}
:set $time1 [$EpochTime];
:set $time2 ($Times->$pos);
:set $dtime ($time1 - $time2);

#Proverka na error
:if ( $time2=(:) ) do={ :set $dtime "0" }


:log warn "$datetime $time Disconnected user: $user $callerId TimeOfConnection: $dtime"
Скрипт кидает в лог время подключения пользователя в секундах.
Правда всё-равно нужно будет данные потом сливать и обрабатывать как-то. (Там 2 скрипта на коннект и дисконнект)


Ответить