Страница 1 из 2
Скрипт подсчет времени работы пользотвалей по VPN
Добавлено: 25 сен 2020, 16:03
N1ghtmare
Подскажите пожалуйста можно ли сделать какой-то скрипт подсчета времени коннекта пользователей по VPN?
К примеру есть 10 сотрудников которые подключаются из дома к микротику, и когда отключаются чтобы в логе была запись такой-то пользователь отключился время работы 5 часов.
Re: Скрипт подсчет времени работы пользотвалей по VPN
Добавлено: 25 сен 2020, 16:17
Sertik
Конечно можно. Вам под заказ ? Тогда милости просим в личку.
Re: Скрипт подсчет времени работы пользотвалей по VPN
Добавлено: 25 сен 2020, 16:33
Ca6ko
N1ghtmare писал(а): ↑25 сен 2020, 16:03
время работы 5 часов.
Время работы микротик подсчитать не может, только время в течении которого было подключение. А наличие активного подключения не означает что сотрудник в это время работал

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

То есть микротик может выдать только статистику подключений.
Это я понял, как раз и нужна статистика сколько кто сидел в течении дня, 2-3-4 часа. ))) То что в это время чаек пьют понятно)))
Нужно как-то в скрипте указать что при выходе записывалось в лог время коннекта, только не селен в скриптах. Если подскажите буду благодарен)
Вроде задача не сложная а выше уже сразу денежку просят))) я еще из эры динозавров так у нас был интернет для обмена знаниями)))
Re: Скрипт подсчет времени работы пользотвалей по VPN
Добавлено: 25 сен 2020, 16:41
Sertik
Если для дела, то можно и за денежку ...

Подсказать немножко можем бесплатно. В ppp-профиль можно вставить скрипт, можно отлавливать подключение vpn-пользователя из скрипта в Планировщике.
Re: Скрипт подсчет времени работы пользотвалей по VPN
Добавлено: 25 сен 2020, 16:48
Ca6ko
У каждого сотрудника должен быть настроен свой отдельный профиль подключения.
Re: Скрипт подсчет времени работы пользотвалей по VPN
Добавлено: 25 сен 2020, 16:51
N1ghtmare
Ca6ko писал(а): ↑25 сен 2020, 16:48
У каждого сотрудника должен быть настроен свой отдельный профиль подключения.
Уже настроены профили и работают)
Re: Скрипт подсчет времени работы пользотвалей по VPN
Добавлено: 25 сен 2020, 16:53
N1ghtmare
Sertik писал(а): ↑25 сен 2020, 16:41
Если для дела, то можно и за денежку ...

Подсказать немножко можем бесплатно. В ppp-профиль можно вставить скрипт, можно отлавливать подключение vpn-пользователя из скрипта в Планировщике.
я увидел что в профиле есть на UP и DOWN возможность выполнения скрипта, вопрос в самом скрипте, я вас понял буду разбираться. Давненько на форумы не обращался и слегка удивлен .... скоро за подскажите сколько времени тоже будут денежку просить :)
Re: Скрипт подсчет времени работы пользотвалей по VPN
Добавлено: 25 сен 2020, 20:45
Sertik
Да нет, за подскажите мы не просим. Если нужен готовый скрипт чтобы не мучаться - тогда за денежку.
Мне тоже готового никто не даёт.

(Ну или только по дружбе)

Re: Скрипт подсчет времени работы пользотвалей по VPN
Добавлено: 16 ноя 2021, 16:55
dangem
У меня получилось вот так:
Отдельные скрипты для 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 скрипта на коннект и дисконнект)