О функциях в скриптах

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

Опубликовал на Хабре небольшую статью, где собрал основные аспекты создания и использования функций в скриптах.
Статья доступна по ссылке https://habr.com/ru/post/646663/
Надеюсь будет полезна.

Код функции универсальной отправки сообщений FuncAS из статьи чуть позже размещу здесь, может пригодится.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Функция-массив Function Active Sender. Комментарии в теле функции и в статье.

Код: Выделить всё

# Функция-массив Func_AS (Function Active Sender) отправки сообщения в мессенджер Телеграмм, SMS через модем, SMS через API sms.ru,
# SMS через шлюзы  устройств Laurent-5G, Netping, сообщений на почту

#--------------------------------------------------------------------------------------------
# FuncAS version 1.4 by Sertik (Serkov S.V.) 09/01/2022
#--------------------------------------------------------------------------------------------

# полностью корректно работает при отправке сообщений на английском языке и/или русском языке с опцией "translite" и с учётом ограничения длины сообщения
# поддерживает спец. символы \$@!#%'()*+,-./:;<=>?[]^_`{|}~
;
# для Телеграмм, API sms.ru и большинства почтовых клиентов (проверено для mail.ru, yandex.ru и gmail.com)
# есть поддержка национального (русского) текста 
# для Телеграмм (опционально $1="translite") и отправки SMS через модемы работает транслитерация русских символов в латинские
;
#  - на роутере должны быть сконфигурированы /tool sms и /tool e-mail
# - при использовании ключа "telegram" должны быть определены global Emoji (Emoji роутера, по желанию), botID и myChatID)
#  - при использовании ключа "smsAPI" должна быть определена global apikey (ключ аккаунта на sms.ru)
#  - при использовании ключа "smsNP" должны быть определены global NPadr (адрес шлюза Netping в сети), NPuser (login), NPpass (пароль)
# - при использовании ключа "smsLT" должны быть определены global Ladr (адрес Laurent-5G в сети) и Lpass (пароль авторизации модуля)
#  !  выбор номера телефона получателя при всех вариантах отправок sms осуществляется в порядке $1 (из параметра функции) -> $ADMINPHONE (global var) -> 
#   ->  first [/tool sms get allowed-number] по алгоритму "если не указан, то следующий"
# ! номера телефонов указывать в международном формате (+7десятизначный номер) поддерживается отправка sms только по России (+7)
#   ! выбор почтового адреса получателя при отправке e-mail осуществляется аналогично в порядке $1 -> $ADMINMAIL (global var)
#
# ! обратить внимание:
# в отличие от обычных функций, которые в $0 хранят своё имя, первый параметр функции массива будет $0 !, второй $1 и т .д....
# вызов функции без ключа [$FuncAS "you mesage"] вызывает последовательную работу всех элементов функции и равноценен [($FuncAS->"all") "you mesage"] 
#
# Usage: [($FuncAS->"telegram") "you mesage"]
#                [($FuncAS->"sms") "you mesage" "phone number"]
#                [($FuncAS->"sms") "you mesage" (phone number get from ADMINPHONE or first [/tool sms get allowed-number];
#                [($FuncAS->"smsAPI") "you mesage" "phonenumber"]
#                [($FuncAS->"smsAPI") "you mesage" (phone number get from ADMINPHONE or or first [/tool sms get allowed-number];
#                [($FuncAS->"smsNP") ("привет text H"."\\"."\$"." @!#%'()*+,-./:;<=>?[]^_`{|}~") "+79104797703"]
#                [($FuncAS->"smsLT") ("good by world") 2]
#                [($FuncAS->"email") "you mesage" "e-mail"]
#                [($FuncAS->"email") "you mesage"] (e-mail get from $ADMINMAIL)
#                [($FuncAS->"all") "you mesage"]  (e-mail get from $ADMINMAIL)
#                [$FuncAS "you mesage"] = [($FuncAS->"all") "you mesage"]   (execute last key)

# see also the examples at the end of the function code !

# defining global users variables:

:global Emoji;                         # :global Emoji "%E2%9B%BA"
:global botID;                        # :global botID "botXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
:global myChatID;                 #:global myChatID "XXXXXXXXX";
:global ADMINPHONE;        #:global ADMINPHONE "+7910777777"
:global ADMINMAIL;            # :global ADMINMAIL user@mail.ru
:global Ladr;                          # :global Ladr 192.168.0.10
:global Lpass;                       # :global Lpass Laurent5G password
:global NPadr;                      # :global NPadr 192.168.0.10:8080
:global NPuser;                    # :global NPuser Sertik
:global NPpass;                   # :global NPpass NPpassword
:global apikey;                     # :global apikey ХХХХХХХХ-ХХХХ-ХХХХ-ХХХХ-ХХХХХХХХХХХХ


:global FuncAS [:toarray ""]


# function transliteration
# string for transliteration is set in the parametr name "string"

:set ($FuncAS->"translite") do={

#  table of the codes of Russian letters Translite
:local rsimv [:toarray {"А"="A"; "Б"="B"; "В"="V"; "Г"="G"; "Д"="D"; "Е"="E"; "Ж"="ZH"; "З"="Z"; "И"="I"; "Й"="J"; "К"="K"; "Л"="L"; "М"="M"; "Н"="N"; "О"="O"; "П"="P"; "Р"="R"; "С"="S"; "Т"="T"; "У"="U"; "Ф"="F"; "Х"="KH"; "Ц"="C"; "Ч"="CH"; "Ш"="SH"; "Щ"="SCH"; "Ъ"="``"; "Ы"="Y`"; "Ь"="`"; "Э"="E`"; "Ю"="JU"; "Я"="YA"; "а"="a"; "б"="b"; "в"="v"; "г"="g"; "д"="d"; "е"="e"; "ж"="zh"; "з"="z"; "и"="i"; "й"="j"; "к"="k"; "л"="l"; "м"="m"; "н"="n"; "о"="o"; "п"="p"; "р"="r"; "с"="s"; "т"="t"; "у"="u"; "ф"="f"; "х"="kh"; "ц"="c"; "ч"="ch"; "ш"="sh"; "щ"="sch"; "ъ"="``"; "ы"="y`"; "ь"="`"; "э"="e`"; "ю"="ju"; "я"="ya"; "Ё"="Yo"; "ё"="yo"; "№"="#"}]

# encoding of the symbols and аssembly line
:local StrTele ""; :local code "";
:for i from=0 to=([:len $string]-1) do={:local keys [:pick $string $i (1+$i)];

:local key ($rsimv->$keys); if ([:len $key]!=0) do={:set $code ($rsimv->$keys);} else={:set $code $keys};

:if (($keys="Ь")  and ([:pick $string ($i+1) (2+$i)]="Е")) do={:set $code "I"; :set $i ($i+1)}
:if (($keys="ь")  and ([:pick $string ($i+1) (2+$i)]="е")) do={:set $code "i"; :set $i ($i+1)}
:if (($keys="Ь")  and ([:pick $string ($i+1) (2+$i)]="е")) do={:set $code "I"; :set $i ($i+1)}
:if (($keys="ь")  and ([:pick $string ($i+1) (2+$i)]="Е")) do={:set $code "i"; :set $i ($i+1)}
:if (($keys="Ы")  and ([:pick $string ($i+1) (2+$i)]="Й")) do={:set $code "I"; :set $i ($i+1)}
:if (($keys="ы")  and ([:pick $string ($i+1) (2+$i)]="й")) do={:set $code "i"; :set $i ($i+1)}
:if (($keys="ы")  and ([:pick $string ($i+1) (2+$i)]="Й")) do={:set $code "i"; :set $i ($i+1)}
:if (($keys="Ы")  and ([:pick $string ($i+1) (2+$i)]="й")) do={:set $code "I"; :set $i ($i+1)}
 :set $StrTele ("$StrTele"."$code")}
:return $StrTele
}


# part to Telegram
:set ($FuncAS->"telegram") do={
         :if ([:len $0]!=0) do={
         :global Emoji
         :global botID;
         :global myChatID;
         :if (([:len $botID]=0) or ([:len $myChatID]=0)) do={:log error "ERROR FuncAs telegram chatbotID not found"; :return "ERROR telegram"}

:if ((any $1) && ($1="translite")) do={
:global FuncAS
:set $0 [($FuncAS->"translite") string=$0]
}


# bypassing the transmission of special characters and symbol "H"
        :local output $0
        :local cp1251 [:toarray {"\20";"\01";"\02";"\03";"\04";"\05";"\06";"\07";"\08";"\09";"\0A";"\0B";"\0C";"\0D";"\0E";"\0F"; \
                                 "\10";"\11";"\12";"\13";"\14";"\15";"\16";"\17";"\18";"\19";"\1A";"\1B";"\1C";"\1D";"\1E";"\1F"; \
                                 "\21";"\22";"\23";"\24";"\25";"\26";"\27";"\28";"\29";"\2A";"\2B";"\2C";"\2D";"\2E";"\2F";"\3A"; \
                                 "\3B";"\3C";"\3D";"\3E";"\3F";"\40";"\5B";"\5C";"\5D";"\5E";"\5F";"\60";"\7B";"\7C";"\7D";"\7E"; \
                                 "\C0";"\C1";"\C2";"\C3";"\C4";"\C5";"\C6";"\C7";"\C8";"\C9";"\CA";"\CB";"\CC";"\CD";"\CE";"\CF"; \
                                 "\D0";"\D1";"\D2";"\D3";"\D4";"\D5";"\D6";"\D7";"\D8";"\D9";"\DA";"\DB";"\DC";"\DD";"\DE";"\DF"; \
                                 "\E0";"\E1";"\E2";"\E3";"\E4";"\E5";"\E6";"\E7";"\E8";"\E9";"\EA";"\EB";"\EC";"\ED";"\EE";"\EF"; \
                                 "\F0";"\F1";"\F2";"\F3";"\F4";"\F5";"\F6";"\F7";"\F8";"\F9";"\FA";"\FB";"\FC";"\FD";"\FE";"\FF"; \
                                 "\A8";"\B8";"\B9";"\48"}];
        :local utf8   [:toarray {"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"000A";"0020";"0020";"000D";"0020";"0020"; \
                                 "0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020";"0020"; \
                                 "0021";"0022";"0023";"0024";"0025";"0026";"0027";"0028";"0029";"002A";"002B";"002C";"002D";"002E";"002F";"003A"; \
                                 "003B";"003C";"003D";"003E";"003F";"0040";"005B";"005C";"005D";"005E";"005F";"0060";"007B";"007C";"007D";"007E"; \
                                 "D090";"D091";"D092";"D093";"D094";"D095";"D096";"D097";"D098";"D099";"D09A";"D09B";"D09C";"D09D";"D09E";"D09F"; \
                                 "D0A0";"D0A1";"D0A2";"D0A3";"D0A4";"D0A5";"D0A6";"D0A7";"D0A8";"D0A9";"D0AA";"D0AB";"D0AC";"D0AD";"D0AE";"D0AF"; \
                                 "D0B0";"D0B1";"D0B2";"D0B3";"D0B4";"D0B5";"D0B6";"D0B7";"D0B8";"D0B9";"D0BA";"D0BB";"D0BC";"D0BD";"D0BE";"D0BF"; \
                                 "D180";"D181";"D182";"D183";"D184";"D185";"D186";"D187";"D188";"D189";"D18A";"D18B";"D18C";"D18D";"D18E";"D18F"; \
                                 "D001";"D191";"2116";"0048"}];
        :local convStr ""; :local code    "";
        :for i from=0 to=([:len $output]-1) do={
            :local symb [:pick $output $i ($i+1)]; 
            :local idx  [:find $cp1251 $symb];
            :local key  ($utf8->$idx);
            :if ([:len $key] != 0) do={
                :set $code ("%$[:pick ($key) 0 2]%$[:pick ($key) 2 4]");
                :if ([pick $code 0 3] = "%00") do={ :set $code ([:pick $code 3 6]); }
            } else={ :set code ($symb); }; 
            :set $convStr ($convStr.$code);
        }

         :set $0 $convStr
         :log info ""; :log warning "FuncAs start telegram sending ...";
              :do {
                 [/tool fetch url="https://api.telegram.org/$botID/sendmessage\?chat_id=$myChatID&text=$Emoji $0" keep-result=no;]
                } on-error={:log error "ERROR FuncAs telegram send"; :return "ERROR telegram"}
          :log warning "FuncAs message to telegram send"; :log info "";
          :return "done telegram"
    } else={:log error "ERROR FuncAs telegram send but no message text"; :return "ERROR telegram" }
}

# part to sms from modem
:set ($FuncAS->"sms") do={
         :if ([:len $0]!=0) do={
         :local SMSdevice [/tool sms get port];
         :local NumPhone
         :global ADMINPHONE;
         :if ([:len $1]!=0) do={:set NumPhone $1} \
              else={
                     :if ([:len $ADMINPHONE]!=0) do={:set NumPhone $ADMINPHONE} \
                            else={
                                :local NumSMS [/tool sms get allowed-number];
                                     :if ([:len $NumSMS]!=0) do={:set NumPhone ($NumSMS->0)} \
                                             else={:log error "ERROR FuncAs sms phone number not found"; :return "ERROR sms"}
}}

# must be performed translite
:global FuncAS
:set $0 [($FuncAS->"translite") string=$0]


         :log info ""; :log warning "FuncAS start sms sending to $NumPhone";
             :do {
                [/tool sms send  $SMSdevice phone=$NumPhone message=$0];
                } on-error={:log error "ERROR FuncAs sms send"; :return "ERROR sms"}
          :log warning "FuncAs sms sent via modem"; :log info "";
          :return "done sms"
    } else={:log error "ERROR FuncAs sms send but no message text"; :return "ERROR sms" }
}


# part to sms from API sms.ru
# must be configured global variable $apikey for sms.ru user
;
:set ($FuncAS->"smsAPI") do={
         :if ([:len $0]!=0) do={
:local SMSanswer;
:global apikey;
:if ([:len $apikey]!=0) do={
       :local NumPhone
         :global ADMINPHONE;
         :if ([:len $1]!=0) do={:set NumPhone $1} \
              else={
                     :if ([:len $ADMINPHONE]!=0) do={:set NumPhone $ADMINPHONE} \
                            else={
                                :local NumSMS [/tool sms get allowed-number];
                                     :if ([:len $NumSMS]!=0) do={:set NumPhone ($NumSMS->0)} \
                                             else={:log error "ERROR FuncAs smsAPI phone number not found"; :return "ERROR smsAPI"}
}}

         :log info ""; :log warning "FuncAS start smsAPI sending to $NumPhone";
         :do {
         :set SMSanswer [/tool fetch url=("https://sms.ru/sms/send\?api_id="."$apikey") mode=https http-method=post http-data=("&to="."$NumPhone"."&msg="."$0"."&json=1") as-value output=user];
               } on-error={:log error "ERROR FuncAs smsAPI fetch send"; :return "ERROR smsAPI"}
          :if (($SMSanswer->"status")="finished") do={
          :local ans;
          :if ([find ($SMSanswer->"data") "ERROR"]>0) do={:set ans "ERROR smsAPI"; :log error "ERROR FuncAs smsAPI send"; :log info "";} else={:set ans "done smsAPI"; :log warning "FuncAs sms sent via API sms.ru"; :log info "";}
          :return $ans;
      } else={:log error "ERROR FuncAs smsAPI fetch to sms.ru"; :return "ERROR smsAPI"} 
    } else={:log error "ERROR FuncAs smsAPI apikey not defined"; :return "ERROR smsAPI"} 
  } else={:log error "ERROR FuncAs smsAPI send but no message text"; :return "ERROR smsAPI" }
}



# part to sms from Laurent-5G module
# must be configured Ladr, Lpass

:set ($FuncAS->"smsLT") do={
:if ([:len $0]!=0) do={
                 :local Lanswer;
                 :global Ladr
                 :global Lport
                 :global Lpass
                 :local Sport
:if (([:len $Ladr]!=0) && ([:len $Lpass]!=0)) do={
:if ([:len $0]!=0) do={
  :if ([:len $1]=0) do={:set $1 "1"}
                 :if ([:len $Lport]=0) do={:set Sport "80";} else={:set Sport $Lport;}

# must be performed translite
     :global FuncAS
     :set $0 [($FuncAS->"translite") string=$0]

# replacing a space in a line with a sign "+"
# for normal space sending
   :local string $0
   :local StrTele
   :for i from=0 to=([:len $string]-1) do={:local keys [:pick $string $i (1+$i)];
# \2B="+" or you can use \5F ("_")
         :if ($keys=" ") do={:set $code "\2B";} else={:set $code $keys};
   :set $StrTele ("$StrTele"."$code")}
   :set $0 $StrTele;

         :log info ""; :log warning "FuncAS start sms from Laurent getway sending to $1 database cell";
                                    :local StrFetchLaurent; :set StrFetchLaurent ("http://"."$Ladr".":"."$Sport"."/cmd.cgi?psw=$Lpass&cmd=SMS,"."SND".","."$1,"."C,"."$0");
                                              do {
                                      :set Lanswer ([/tool fetch url=$StrFetchLaurent mode=http as-value output=user]->"data"); 
                                                                } on-error={: log info ""; :log error ("Call ERROR function <$0> ERROR fetch command"); 
                                                                                      :local Lanswer "ERROR $0 command ROS <fetch>"; : log info ""; :return $Lanswer}
                                                     :if ($Lanswer="#SMS,SND,OK\0D\0A") do={:log warning "FuncAs sms sent via Laurent getway"; :log info ""; :return "done smsLT";} else={
                                    :if ($Lanswer="#ERR,NO_FREE_PLACE\0D\0A") do={:log info ""; :log error ("ERROR function FuncAS smsLT but no free place");
                                   :log info ""; :return "ERROR FuncAS smsLT no free place"}
                                    :if ($Lanswer="#ERR,BAD_PHN\0D\0A") do={:log info ""; :log error ("ERROR function FuncAS smsLT but invalid phone number");
                                   :log info ""; return "ERROR FuncAS smsLT bad phone number"}
    :return "ERROR smsLT unknown"}

        } else={:log info ""; :log error "ERROR FuncAs smsLT parametrs no defined"; :return "ERROR smsLT"}
   } else={:log info ""; :log error  "ERROR FuncAS smsLT Ladr or Lpass not defined"; :return "ERROR smsLT"}
 }
}





# part to sms from Netping device modem (as getway)

# [$FuncNPsendSMS "you text in utf8" "+7phonenumber"]
# должны быть определены NPadr, NPuser, NPpass

:set ($FuncAS->"smsNP") do={
:if ([:len $0]!=0) do={
:global NPadr; :global NPuser; :global NPpass;
:if (([:len $NPadr]!=0) && ([:len $NPuser]!=0) && ([:len $NPpass]!=0)) do={
:local NPanswer;
       :local NumPhone
         :global ADMINPHONE;
         :if ([:len $1]!=0) do={:set NumPhone $1} \
              else={
                     :if ([:len $ADMINPHONE]!=0) do={:set NumPhone $ADMINPHONE} \
                            else={
                                :local NumSMS [/tool sms get allowed-number];
                                     :if ([:len $NumSMS]!=0) do={:set NumPhone ($NumSMS->0)} \
                                             else={:log error "ERROR FuncAs smsNP phone number not found"; :return "ERROR smsAPI"}
}}
:if ([:pick $NumPhone 0 2]="+7") do={

# must be performed translite
:global FuncAS
:set $0 [($FuncAS->"translite") string=$0]

         :log info ""; :log warning "FuncAS start sms from Netping getway sending to $NumPhone";
:do {
:set NPanswer [/tool fetch url=("http://"."$NPadr"."/sendsms.cgi\?utf8") mode=http http-method=post http-data=("["."$NumPhone"."]"." "."$0") user=$NPuser password=$NPpass as-value output=user];
} on-error={:log error "ERROR FuncAs smsNP fetch send"; :return "ERROR smsNP"}
:if (($NPanswer->"status")="finished") do={:log warning "FuncAs sms sent via Netping getway"; :log info "";
        :set NPanswer ($NPanswer->"data"); 
:if ([:find $NPanswer "ok"]) do={:return "done smsNP"} else={:return "ERROR smsNP"}
            } else={ :return "ERROR smsNP"}
      } else={:log error "ERROR FuncAs smsNP invalid phone number format"; :return "ERROR smsNP"} 
     } else={:log error "ERROR FuncAs smsNP NPadr or NPuser or NPpass not defined"; :return "ERROR smsNP"} 
   } else={:log error "ERROR FuncAs smsNP send but no message text"; :return "ERROR smsNP" }
}


# part to e-mail
:set ($FuncAS->"email") do={
            :if ([:len $0]!=0) do={
             :global ADMINMAIL;
         :if (([:len $1]=0) && ([:len $ADMINMAIL]=0)) do={:log error "ERROR FuncAs email send E-mail address not found"; :return "ERROR email"}
              :if ([:len $1]!=0) do={} else={:set $1 $ADMINMAIL}
              :local smtpserv
              :do {
              :set smtpserv [:resolve [/tool e-mail get address]];} on-error={:log error "ERROR FuncAs email no resolve email server"; :return "ERROR email"}
              :local Eaccount [/tool e-mail get user];
              :local pass [/tool e-mail get password];
              :local Eport [/tool e-mail get port];
              :local Etls "yes"; # если не используется установить в "no";
              :log info " "; :log warning ("FuncAS start mail sending ... to e-mail: $1");
              :do {
#                   [/tool e-mail send from="<$Eaccount>" to=$1 server=$smtpserv \
#                   port=$Eport user=$Eaccount password=$pass start-tls=$Etls subject=("from FuncAS Router $[/system identity get name]\r\nMIME-Version: 1.0\r\nContent-Type: text/plain; charset=utf-8") body=$0;];
                   [/tool e-mail send from="<$Eaccount>" to=$1 server=$smtpserv \
                   port=$Eport user=$Eaccount password=$pass start-tls=$Etls subject=("from FuncAS Router $[/system identity get name]") body=$0;];
               } on-error={:log error "ERROR FuncAs email send"; :return "ERROR email"}
                   :local sendit 60
                    :while ($sendit > 0) do={:delay 1s; :set $sendit ($sendit - 1)
                    :if (([tool e-mail get last-status] = "succeeded") or ([tool e-mail get last-status] = "failed")) do={:set $sendit 0}}
                    :if ([tool e-mail get last-status] = "succeeded") do={:log warning "FuncAs message to email send"; :log info ""; :return "done email"} \
                    else={:log error "ERROR FuncAs email send"; :return "ERROR email"}
    } else={:log error "ERROR FuncAs email send but no message text"; :return "ERROR email" }
 }


# to all channels (a psevdo recursive call is used !)
# must be the last to bypass the $0 <-->$1 effect

:set ($FuncAS->"all") do={
         :if ([:len $0]!=0) do={
        :global FuncAS;
        :global ADMINMAIL;
        :local T
        :local E
        :local MDsms
        :local APIsms
        :local LTsms
        :local NPsms

# bypass when calling a function without keys !
        
        :if ([:typeof $0]="lookup") do={:set $0 $1; :if ((any $2) && ($2="translite")) do={:set $1 $2}}

        :set T [($FuncAS->"telegram") $0 $1]
        :set E [($FuncAS->"email") $0 $ADMINMAIL]
        :set MDsms [($FuncAS->"sms") $0]
        :set APIsms [($FuncAS->"smsAPI") $0]
        :set LTsms [($FuncAS->"smsLT") $0]
        :set NPsms [($FuncAS->"smsNP") $0]
        :return [:toarray {$T;$E;$MDsms; $APIsms; $LTsms; $NPsms}]
    } else={:log error "ERROR FuncAs all but no message text"; :return "ERROR common sending" }
}


# -------------------------------------------------------------------
# examples call:
# -------------------------------------------------------------------

# :log info "ok"

# :global FuncAS
# :log info [($FuncAS->"telegram") ("Router "."$[/system identity get name]"." test function FuncAS to Telegram Hello тест функции FuncAS для Телеграмм")]
# :log info [($FuncAS->"telegram") ("Router "."$[/system identity get name]"." test function FuncAS to Telegram Hello тест функции FuncAS для Телеграмм") "translite"]
# :log info [($FuncAS->"email") ("Router "."$[/system identity get name]"." test FuncAS to e-mail проверка") "user@gmail.com"]
# :log info [($FuncAS->"email") ("Router "."$[/system identity get name]"." test FuncAS to e-mail")]
# :log info [($FuncAS->"sms") ("Router "."$[/system identity get name]"." test function FuncAS test to SMS Привет !")]
# :log info [($FuncAS->"all") ("Router "."$[/system identity get name]"." test function FuncAS all channels")]

# exception support for Telegram
# :log info [($FuncAS->"telegram") ("text H"."\\"."\$"." @!#%'()*+,-./:;<=>?[]^_`{|}~")]

# :log info [($FuncAS->"smsAPI") "Verify for Sertik" "+79107777777"]
# :log info [($FuncAS->"smsAPI")]
# :log info [($FuncAS->"smsAPI") "смс от Микротик to you" "+79657777777"]

# exception transliteration for Telegram and send SMS modem
# :log info [($FuncAS->"smsNP") ("привет text H"."\\"."\$"." @!#%'()*+,-./:;<=>?[]^_`{|}~") "+79657777777"]

# :log info [($FuncAS->"telegram") ("Router "."$[/system identity get name]"." Привет админ ! С новым годом тебя ...") "translite"]
# :log info [$FuncAS "С новым годом !"]
# :log info [$FuncAS "С новым годом !" "translite"]

# :log info [($FuncAS->"smsLT") ("good by world") 2]
# :log info [($FuncAS->"smsLT") ("привет text H"."\\"."\$"." @!#%'()*+,-./:;<=>?[]^_`{|}~") 2]

# :log info [$FuncAS "good by world" sv_device@mail.ru]
# :log info [($FuncAS->"all") ("good by world до свидания мир") "translite"]
Последний раз редактировалось Sertik 21 мар 2022, 14:48, всего редактировалось 1 раз.


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

Вот это да! Большое спасибо за труды!


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

Пожалуйста. Кто хочет помогайте. Чем больше будет хороших скриптов, тем будет лучше для всех.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Очень хорошее и глубокое исследование функций в скриптах Микротик (жаль автор неизвестен):

https://vk.com/@habr_articles-rss-650396164-115206225


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

А ты не пробовал дать ссылку на оригинал, там и автор указан.


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Sertik писал(а): 15 фев 2022, 15:06 (жаль автор неизвестен):
Ха! Да это же твой кумир, дружище!!! Это Чупакабра...
https://habr.com/ru/post/650795/


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Приветствую, дружище (я имею ввиду Podarok66 !)
Спасибо за "оригинал" ссылку на статью. Да, Чупакабра кумир, очень светлая голова, узнать бы кто скрывается за этим псевдонимом ...


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

В своё время без успешно искал способ записи файла более 4kb. А тут подсказали на другом форуме, автор примера, соответственно, не я.

Код: Выделить всё

:local s ":for i from=0 to=1000 do={:put \"How many wonderful discoveries we have\"}"
:execute script=$s file="test.txt"
Адаптировать под свои хотелки не проблема.


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

Код: Выделить всё

:local s ":for i from=0 to=1000 do={:put \"How many wonderful discoveries we have\"}"
:execute script=$s file="test.txt"
Спасибо, очень интересно. Но лучше бы вынести в особую тему, т.к. тут могут это просто не найти ...


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить