ΠΠΎΠ±ΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌ Π΄Π½Ρ!
ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΡΠ΅ΡΠΈΠ» ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΎΠ΄Π΅ Π±Ρ ΠΈ Π½Π΅ ΠΎΡΠΎΠ±ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π° Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, Ρ ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΌΠ΅ΠΊΠΈ Π½Π° Π½Π΅Π΅ Π΅ΡΡΡ, Π½ΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π΄ΠΎΡΡΠ°Π»Π°ΡΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ»Π³ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ½ΡΠΌ ΠΊΠΎΠΏΠ°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° ΠΈ Π²ΠΈΠΊΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ Mikrotik.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π·Π°Π΄Π°ΡΠ°: ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ SMS ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΎΠ².
ΠΠΌΠ΅Π΅ΡΡΡ:
- ΠΡΠΎΡΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡ CRS317-1G-16S+
- Π’ΠΎΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° Mikrotik NETMETAL 5
- LTE ΠΌΠΎΠ΄Π΅ΠΌ R11e-LTE
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎ ΡΡΠ΄Π΅ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° Netmetal 5 ΠΈΠΌΠ΅Π΅Ρ Π½Π° Π±ΠΎΡΡΡ ΡΠ°ΡΠΏΠ°ΡΠ½Π½ΡΠΉ ΡΠ°Π·ΡΠ΅ΠΌ Π΄Π»Ρ ΡΠΈΠΌ ΠΊΠ°ΡΡΡ ΠΈ ΠΏΠΎΡΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ LTE ΠΌΠΎΠ΄Π΅ΠΌΠ°. ΠΠΎΡΠΎΠΌΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΊΠΈ Π±ΡΠ» ΠΊΡΠΏΠ»Π΅Π½ ΠΏΠΎ ΡΡΡΠΈ Π»ΡΡΡΠΈΠΉ ΠΌΠΎΠ΄Π΅ΠΌ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»ΠΎΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ°ΠΌΠΎΠΉ ΡΠΎΡΠΊΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ R11e-LTE. Π’ΠΎΡΠΊΠ° Π±ΡΠ»Π° ΡΠ°Π·ΠΎΠ±ΡΠ°Π½Π°, Π²ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π° ΡΠ²ΠΎΠΈ ΠΌΠ΅ΡΡΠ° (Ρ ΠΎΡΡ Π½Π°Π΄ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΠΈΠΌ ΠΊΠ°ΡΡΠ° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° ΠΏΠΎΠ΄ ΠΌΠΎΠ΄Π΅ΠΌΠΎΠΌ ΠΈ Π±Π΅Π· ΡΠ½ΡΡΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡ Π΅Π΅ Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠ°ΡΡ), ΠΏΠΎΡΠΎΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠΈΠΌ ΠΊΠ°ΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ, ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ ΡΠΎΡΠΊΡ Π΄ΠΎΡΡΡΠΏΠ°.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΡΠ²Π΅ΡΠ»ΠΈΠ»ΠΈ ΠΏΠ°ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠΈΠΉ Π² ΠΊΠΎΡΠΏΡΡΠ΅, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ 2 ΠΏΠΈΠ³ΡΠ΅ΠΉΠ»Π° ΠΈ ΠΊΠΎΠ½ΡΡ Π·Π°ΠΊΡΠ΅ΠΏΠΈΠ»ΠΈ Π½Π° ΠΌΠΎΠ΄Π΅ΠΌΠ΅. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΎΡΡ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π½Π° ΠΏΠΈΠ³ΡΠ΅ΠΉΠ»Ρ Π·Π°ΠΊΡΠ΅ΠΏΠΈΠ»ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°Π½ΡΠ΅Π½Π½Ρ Ρ ΠΌΠ°Π³Π½ΠΈΡΠ½ΡΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ°ΠΏΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ, ΠΊΡΠΎΠΌΠ΅ ΠΌΠ΅Π»ΠΊΠΈΡ ΠΊΠΎΡΡΠΊΠΎΠ² Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠ΄Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ SMS, ΠΊΠΎΠ³Π΄Π° ΠΈΠ· ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ 5 ΡΡΡΠΊ ΠΈ ΠΎΠ½ΠΈ Π²ΠΈΡΡΡ Π² Inbox, ΠΎΡΠΈΡΡΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΠΌΠΎΠ΄Π΅ΠΌΠ° Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎ Π² Π²Π΅ΡΡΠΈΠΈ 6.44.1 ΠΏΡΠΈΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ. Π Inbox ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ 4 ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ sms, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΈ ΠΆΠΈΠ·Π½ΠΈ Π½Π΅ ΠΌΠ΅ΡΠ°ΡΡ.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° ΡΡΡΠΈΡΡ ΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π½Π° Π΄Π²ΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ°Ρ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Mikrotik Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· SNMP, Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎΡΠΎΠΌΡ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΊΠΎΠΏΠ°ΡΡ Π² Π΄ΡΡΠ³ΡΡ ΡΡΠΎΡΠΎΠ½Ρ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Mikrotik API.
Π§Π΅ΡΠΊΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ ΠΏΠΎΠΏΡΡΠΎΠΊ ΡΠ΄Π΅Π»Π°Π½Π° ΡΡΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ.
ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΠΈ ΡΠ°Π±ΠΎΡΠΈΠΉ WEB ΡΠ΅ΡΠ²Π΅Ρ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ, Π½Π° Π½Π΅Π³ΠΎ Π²ΠΎΠ·Π»Π°Π³Π°Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Mikrotik.
1. ΠΠ° Netmetal 5 Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ°ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ
system script
add dont-require-permissions=no name=disableiface owner=admin policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=
"/tool fetch http://WEB_SERVER_IP/di.php "
add dont-require-permissions=no name=enableiface owner=admin policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=
"/tool fetch http://WEB_SERVER_IP/en.php "
2. Π‘ΠΎΠ·Π΄Π°ΡΡ 2 ΡΠΊΡΠΈΠΏΡΠ° Π½Π° Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠ΅ (ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ php):
<?php
# file en.php enable interfaces
require('/usr/lib/zabbix/alertscripts/routeros_api.class.php');
$API = new RouterosAPI();
$API->debug=true;
if ($API->connect('IP ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Mikrotik', 'Π»ΠΎΠ³ΠΈΠ½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°', 'ΠΏΠ°ΡΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°')) {
$API->comm("/interface/ethernet/enable", array(
"numbers"=>"sfp-sfpplus16",));
}
$API->disconnect();
?>
<?php
#file di.php disable interfaces
require('/usr/lib/zabbix/alertscripts/routeros_api.class.php');
$API = new RouterosAPI();
$API->debug=true;
if ($API->connect('IP ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Mikrotik', 'Π»ΠΎΠ³ΠΈΠ½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ', 'ΠΏΠ°ΡΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°')) {
$API->comm("/interface/ethernet/disable", array(
"numbers"=>"sfp-sfpplus16",));
}
$API->disconnect();
?>
3. Π‘ΠΊΠ°ΡΠ°ΡΡ Ρ ΡΠΎΡΡΠΌΠ° Mikrotik routeros_api.class.php ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π΅Π³ΠΎ Π² Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
Π²ΠΌΠ΅ΡΡΠΎ sfp-sfpplus16 Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌΡ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ/Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° Π½ΠΎΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Π΅
:cmd Π‘ΠΠΠ ΠΠ’ΠΠ«ΠΠΠΠ script enableiface
ΠΈΠ»ΠΈ
:cmd Π‘ΠΠΠ ΠΠ’ΠΠ«ΠΠΠΠ script disableiface
NETMETAL Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΊΡΠΈΠΏΡ, Π° ΡΠΎΡ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° WEB ΡΠ΅ΡΠ²Π΅ΡΠ΅.
Π‘ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΌΡ Π΄ΠΎΠ»ΠΈ ΡΠ΅ΠΊΡΠ½Π΄Ρ. Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ.
ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π‘ΠΠ‘ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Zabbix ΠΈ ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ Π²ΡΡ
ΠΎΠ΄Π° Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΏΡΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΠΎΠΏΡΠΈΠΊΠΈ. ΠΠΎΠΆΠ°Π»ΡΠΉ ΡΡΠΎ Π²ΡΡ
ΠΎΠ΄ΠΈ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ, Π½ΠΎ ΡΠΊΠ°ΠΆΡ ΡΡΠ°Π·Ρ, ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠΌΡ ΠΈΡ
Π΄Π»ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Ρ.ΠΊ. Mikrotik Π½Π΅ Π΄Π΅Π»ΠΈΡ ΠΈΡ
Π½Π° ΡΠ°ΡΡΠΈ, Π° ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π΅Π³ΠΎ Π½Π΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π‘ΠΠ‘ Π½Π΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com