Перейти к основному содержимому
Версия: 7.11

Служебные методы и классы Lua

Класс Scheduler

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

Экземпляр создается автоматически при вызове скрипта и доступен через переменную scheduler.

curl Метод

Принимает таблицу (коллекцию «ключ-значение») аргументов.

Параметры

ПараметрПримерЗначение по умолчаниюОписание
uri"http://smon.monq.ru"ОтсутствуетДопустимый (согласно RFC 2396) URI ресурса.
method"POST""GET"Допустимый (согласно 4.3 RFC 7231) HTTP 1.1-метод, используемый для вызова.
body"[{ "key": "value" }]"ОтсутствуетТело запроса. Произвольная строка.
mediaType"application/json""text/plain"MIME-типы – типы данных, которые могут быть переданы посредством сети Интернет с применением стандарта MIME.
headers{ ["accept-encoding"] = "gzip, deflate" }ОтсутствуетТаблица (коллекция «ключ-значение») ключей заголовков и их значений.
proxy{ address = "http://1.1.1.1:8080", bypassList = { "http://url1", "http://url2" }, credentials = { username = "guest", password = "guest" } }ОтсутствуетНастройки проксирования запроса.
address – допустимый (согласно RFC 2396) URI ресурса.
bypassList – массив адресов или регулярных выражений, описывающих адресы, при запросах к которымне будет использоваться прокси.
credentials – учётные данные для аутентификации на прокси-сервере.
username – имя пользователя.
password – пароль.
basicAuth{ login = "guest", password = "guest" }ОтсутствуетНастройки базовой авторизации для запроса.
login – имя пользователя.
password – пароль.
insecuretrue / falsefalseВыполнить запрос без проверки подлинности сертификатов.

Модель ответа

Если возникла ошибка, то data = nil, err ~= nil. Если ответ нормальный, то data ~= nil, err = nil.

{
data = {
statusCode = 200,
headers = {
["Server"] = "nginx/1.10.3",
["Date"] = "Wed, 16 Oct 2019 07:00:09 GMT"
},
content = "content string",
isSuccessStatusCode = true
},
err = {
message = "Ошибка"
}
}

Пример

Basic-авторизация через открытый прокси:

local args =
{
uri = "https://jigsaw.w3.org/HTTP/Basic/",
proxy = {
address = "http://212.220.216.70:8080"
},
basicAuth = {
login = "guest",
password = "guest"
}
}
local response = curl(args)
if (response.err ~= nil) then
print(response.err)
return -- Ранний выход из скрипта, если возникла ошибка.
end

if (response.data.isSuccessStatusCode) == true then
print(response.data.content)
else
print(":( status code " .. response.data.statusCode)
end

ssh Метод

Принимает таблицу (коллекцию «ключ-значение») аргументов.

Параметры

ПараметрТипПримерЗначение по умолчанию
hoststring"http://sample.ssh.com/"Отсутствует
portnumber2322
usernamestring"demo-user"Отсутствует
passwordstring"demo-password"Отсутствует
privateKeystring"0KHQtdC60YDQtdGC0L3QvtC1INC/0L7RgdC70LDQvdC40LUgO15Q"Отсутствует
commandstringecho "I have a bad feeling about this."Отсутствует

Пример

local args =
{
host = "sample.ssh.com",
command = "ls /tmp/doc"
}
local response = ssh(args)
if response.data.exitStatus == 0 then
print(response.data.result)
else
print(":( error " .. response.data.error)
end

snmp Метод

Управление сетевыми устройствами

Параметры

ПараметрПримерЗначение по умолчанию
ip"64.233.163.94"Отсутствует
community"public""public"
version"2c""1"
level"authnopriv""noauthnopriv"
method"walk""get"
timeout100001000
maxrepetitions110
mode"subtree""all"
data"s Shanghai"Отсутствует
oid"1.3.6.1.2.1.1.6.0"Отсутствует
user"privacy"""
contextname""""
authentication"md5"""
authphrase"authentication"""
privphrase"privacyphrase"""

Пример

Сложный snmpget 3 версии:

local args =
{
ip = "192.168.10.1",
oid = "1.3.6.1.2.1.1.1.0",
version = 3,
level = "authPriv",
authentication = "authentication",
privphrace = "privacyphrase",
user = "privacy"
}
local response = snmp(args)
print(response.data)

Простой snmpwalk 1 версии:

local args =
{
ip = "192.168.10.1",
community = "public",
oid = "1.3.6.1.2.1.1.1.0",
method = "walk",
mode = "subtree",
maxrepetitions = 5
}
local response = snmp(args)
print(response.data)

smtp Метод

Отправляет сообщения на сервер электронной почты.

Параметры

ПараметрПримерОписание
hostАдрес сервера-отправителя (IP-адрес, либо DNS-имя)
port25Номер порта на сервере
secureMode"None" / "Auto" / "SslOnConnect" / "StartTls" / "StartTlsWhenAvailable"Принудительно задает режим шифрования.
usernameЛогин пользователя-отправителя (опционально, при наличии проводится аутентификация на сервере).
passwordПароль пользователя-отправителя (опционально)
subjectТема письма
bodyТекст письма
mailTypeТип отображения сообщения (plain, html)
from{ title = "Отдел оповещения", address = "sender@server.net" }Адрес отправителя (должен соответствовать формату адреса электронной почты, при несоответствии скрипт будет завершен с ошибкой)
recipients{ "overwatchers@gmail.com", "overwatchers@ya.ru", "tester@gmail.com" }Список адресов получателей (адреса, которые не соответствуют формату адреса электронной почты, будут исключены из рассылки)

Модель ответа

При успешном завершении data = true При возникновении ошибки data = false, err – объект-исключение с сообщением об ошибке error.Message

Пример

Отправка сообщения одному получателю:

local = smtp({
host = "server.mail.ru",
port = 25,
useSsl = true,
username = "user",
password = "pass",
subject = "Оповещение о событии",
body = "Уважаемые участники, ...",
mailType = "plain",
from = "sender@server.net",
recipients = "overwatchers@server.com"
})
if (response.data) == false then print(response.err) end

regexIsMatch(string input, string pattern) Метод

Проверяет, обнаружено ли в указанной входной строке соответствие заданному регулярному выражению.

Параметры

  • input – входная строка
  • pattern – регулярное выражение (PCRE-диалект)

Модель ответа

  • true – если соответствует
  • false – если не соответствует

Пример

regexIsMatch("user@mailbox.net", "(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})")

regexMatch(string input, string pattern) Метод

Ищет в указанной входной строке первое вхождение заданного регулярного выражения.

Параметры

  • input – входная строка
  • pattern – регулярное выражение (PCRE-диалект)

Модель ответа

Пример

Выводит все электронные адреса, содержащиеся в строке, в консоль:

local result = regexMatch([[test1@test.com test2 test3@test.com test4@test4com]], [[(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})]])
while result.Success == true do
print (result.Value)
result=result:NextMatch()
end

regexReplace(string input, string pattern, string replacement) Метод

Заменяет во входной строке все подстроки, соответствующие указанному регулярному выражению, на указанное значение.

Параметры

  • input – входная строка
  • pattern – регулярное выражение (PCRE-диалект)
  • replacement – строка замены

Модель ответа

  • string – строка с замененной подстрокой

Пример

Заменяет все найденные электронные адреса на строку email:

local result = regexReplace([[test1@test.com test2 test3@test.com test4@test4com]], [[(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})]], [[email]])
print (result)

regexSplit(string input, string pattern) Метод

Разделяет входную строку в массив подстрок в позициях, определенных шаблоном регулярного выражения.

Параметры

  • input – входная строка
  • pattern – регулярное выражение (PCRE-диалект)
  • replacement – строка замены

Модель ответа

  • string[] – массив подстрок

Пример

Разделяет входную строку в массив подстрок по строке email:

local result = regexSplit([[test1@test.com test2 test3@test.com test4@test4com]], [[(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})]])
for i = 0, result.Length-1 do
print (result:GetValue(i))
end

scheduleAfter Метод

Запланировать вызов скрипта через <seconds> секунд, начиная с момента вызова метода.

Параметры

  • seconds – количество секунд, через которое будет запущен скрипт, начиная с момента вызова метода

Модель ответа

  • LuaResult<boolean> – результат выполнения метода
  • True – скрипт запланирован
  • False – возникли проблемы с постановкой скрипта в планировщик
  • result.err – детали ошибки

Пример

GET-запрос на получение JSON-ресурса по заданному пути:

if (isScheduled == true) then
print("Скрипт был запущен планировщиком.")
else
scheduler:executeAfter(60) -- Запланировать выполнение скрипта через 60 сек после вызова данного метода
print("Скрипт был запланирован.")
end