Рестарт сессии с переносом остатков

Previous pageReturn to chapter overviewNext page

 

 Этот скрипт отличается от скрипта "Рестарт сессии для группы клиентов" тем, что клиенту в новой сессии переносится остаток предыдущей. Этот вариант, например, подходит для домовой сети, где имеется некоторый ежемесячный бесплатный трафик и из-за этого приходится каждый месяц начинать новую сессию, так как простое добавление бесплатного (предоплаченного) трафика будет означать перенос неизрасходованного лимита в новый месяц, что не совсем логично.

 

 Скрипт запускается из командной строки в каталоге scripts.

 

 cscript.exe rstsess2.vbs APIPassword GroupID Cash /sn:ServerName

 

 Здесь

 APIPassword - пароль доступа.

 GroupID - GUID или имя группы.

 Cash - Можно также положить некоторую сумму в дополнение к перенесенному остатку. Если не надо, задайте 0.

 ServerName - имя сервера - необязательный параметр - задается при запуске скрипта с удаленного компьютера.

 

 Заметим, что этот скрипт после сброса сессии возвращает клиента в то состояние, в котором он был ранее. Т.е. если он был в паузе, то и снова будет в паузе.

 


Set Args = WScript.Arguments.Unnamed

If Args.Count <> 3 Then

 WScript.Echo "??? usage: cscript.exe rstsess2.vbs APIPassword GroupID Cash /sn:ServerName"        

 WScript.Quit        

End If

 

APIPass = Args(0)

Obj = Args(1)

Cash = Args(2)

 

If WScript.Arguments.Named.Exists("sn") Then

 ServName = WScript.Arguments.Named.Item("sn")

 Set Srv = CreateObject("TrafInsp.TrafInspAdmin",ServName)

Else

 Set Srv = CreateObject("TrafInsp.TrafInspAdmin")

End If

Srv.APILogon(APIPass)

 

UserList = Srv.ApiGetBillProp(3, Obj)

 

' Получили список клиентов группы

' Проверяем, что это таблица - двухмерный массив

 

If Not IsArray(UserList) Or Not IsArray(UserList(0)) Then

 WScript.Echo "Нет данных"        

 WScript.Quit        

End If

 

For I = 0 To UBound(UserList, 1)

 User = UserList(I)

 ' Получили строку - описание пользователя

 UserID = User(1)

 UserState = Srv.APIGetUserState(UserID)

 ' Считываем текущее состояние сессии

 OldState = UserState(4)

 OldBall = UserState(19)

 ' Переводим пользователя в СТОП

 Srv.APISetUserState UserID, -1, 0, "Script", "Очищаем сессию"

 ' Переводим сессию пользователя в состояние, которое было ранее.

 ' Если надо всех обязательно запустить, то поправьте OldState на '2'

 Srv.APISetUserState UserID, Cash+OldBall, OldState, "Script", "Запускаем сессию"

 WScript.Echo "Клиент " & User(0) & " на счету " & Cash+OldBall

Next

 

 

 


Текущая страница справки: help.smart-soft.ru/index.html?apidemorst2.htm

Сайт разработчиков Traffic Inspector