เชชเซ‹เชฐเซเชŸ 80 เชฆเซเชตเชพเชฐเชพ Lunix/OpenWrt/Lede เช†เชงเชพเชฐเชฟเชค เช‰เชชเช•เชฐเชฃเซ‹เชจเซเช‚ เชฐเชฟเชฎเซ‹เชŸ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เช…เชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ...

เชฌเชงเชพเชจเซ‡ เชจเชฎเชธเซเช•เชพเชฐ, เชนเซ‡เชฌเซเชฐเซ‡ เชชเชฐ เช† เชฎเชพเชฐเซ‹ เชชเชนเซ‡เชฒเซ‹ เช…เชจเซเชญเชต เช›เซ‡. เชนเซเช‚ เชฌเชฟเชจ-เชฎเชพเชจเช• เชฐเซ€เชคเซ‡ เชฌเชพเชนเซเชฏ เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฐ เชจเซ‡เชŸเชตเชฐเซเช• เชธเชพเชงเชจเซ‹เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชฒเช–เชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เชฌเชฟเชจ-เชฎเชพเชจเช•เชจเซ‹ เช…เชฐเซเชฅ เชถเซเช‚ เช›เซ‡: เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เชฌเชพเชนเซเชฏ เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฐ เชธเชพเชงเชจเซ‹เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชจเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡:

  • เชธเชพเชฐเซเชตเชœเชจเชฟเช• IP เชธเชฐเชจเชพเชฎเซเช‚. เชธเชพเชฐเซเช‚, เช…เชฅเชตเชพ เชœเซ‹ เชธเชพเชงเชจเชธเชพเชฎเช—เซเชฐเซ€ เช•เซ‹เชˆเชจเซ€ NAT เชจเซ€ เชชเชพเช›เชณ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชเช• เชธเชพเชฐเซเชตเชœเชจเชฟเช• IP เช…เชจเซ‡ "เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเซ‡เชฒ" เชชเซ‹เชฐเซเชŸ.
  • เช•เซ‡เชจเซเชฆเซเชฐเซ€เชฏ เชจเซ‹เชก เชธเซเชงเซ€ เชŸเชจเชฒ (PPTP/OpenVPN/L2TP+IPSec, เชตเช—เซ‡เชฐเซ‡.) เชœเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เชคเซ‡ เชธเซเชฒเชญ เชนเชถเซ‡.

เชคเซ‡เชฅเซ€, เชœเซเชฏเชพเชฐเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเชฆเซเชงเชคเชฟเช“ เชคเชฎเชจเซ‡ เช…เชจเซเช•เซ‚เชณ เชจ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเชพเชฐเซ‡ "เชฎเชพเชฐเซ€ เชฌเชพเช‡เช•" เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡:

  1. เชธเชพเชงเชจเซ‹ NAT เชจเซ€ เชชเชพเช›เชณ เชธเซเชฅเชฟเชค เช›เซ‡ เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ HTTP (เชชเซ‹เชฐเซเชŸ 80) เชธเชฟเชตเชพเชฏ, เชฌเชงเซเช‚ เชฌเช‚เชง เช›เซ‡. เชฎเซ‹เชŸเชพ เชซเซ‡เชกเชฐเชฒ เช•เซ‹เชฐเซเชชเซ‹เชฐเซ‡เชŸ เชจเซ‡เชŸเชตเชฐเซเช• เชฎเชพเชŸเซ‡ เช† เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชฅเชฟเชคเชฟ เช›เซ‡. เชคเซ‡เช“ เชชเซ‹เชฐเซเชŸเชจเซ€ เชจเซ‹เช‚เชงเชฃเซ€ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฐเชค เชœ เชจเชนเซ€เช‚, เชเชกเชชเชฅเซ€ เชจเชนเซ€เช‚, เช…เชจเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชจเชนเซ€เช‚.
  2. เช…เชธเซเชฅเชฟเชฐ เช…เชจเซ‡/เช…เชฅเชตเชพ "เชธเช‚เช•เซเชšเชฟเชค" เชธเช‚เชšเชพเชฐ เชšเซ‡เชจเชฒ. เช“เช›เซ€ เชเชกเชช, เชธเชคเชค เชจเซเช•เชธเชพเชจ. เชŸเชจเชฒ เช—เซ‹เช เชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชชเซ€เชกเชพ เช…เชจเซ‡ เชนเชคเชพเชถเชพ.
  3. เชเช• เช–เชฐเซเชšเชพเชณ เชธเช‚เชšเชพเชฐ เชšเซ‡เชจเชฒ, เชœเซเชฏเชพเช‚ เชถเชพเชฌเซเชฆเชฟเช• เชฐเซ€เชคเซ‡ เชฆเชฐเซ‡เช• เชฎเซ‡เช—เชพเชฌเชพเชˆเชŸเชจเซ€ เช—เชฃเชคเชฐเซ€ เชฅเชพเชฏ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเซ‡เชŸเซ‡เชฒเชพเช‡เชŸ เชธเช‚เชšเชพเชฐ. เช‰เชชเชฐเชพเช‚เชค เชฒเชพเช‚เชฌเชพ เชตเชฟเชฒเช‚เชฌ เช…เชจเซ‡ "เชธเชพเช‚เช•เชกเซ€" เชฌเซ‡เชจเซเชก.
  4. เชเชตเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเชพเชฐเซ‡ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชจเชพเชจเชพ เชฐเชพเช‰เชŸเชฐเซเชธเชจเซ‡ "เชœเช—เชฒ" เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชœเซ‡เชจเชพ เชชเชฐ, เชเช• เชคเชฐเชซ, เช•เซเชทเชฎเชคเชพเช“เชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ OpenWrt/Lede เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡, เช…เชจเซ‡ เชฌเซ€เชœเซ€ เชฌเชพเชœเซ, เชฐเชพเช‰เชŸเชฐเชจเชพ เชธเช‚เชธเชพเชงเชจเซ‹ (เชฎเซ‡เชฎเชฐเซ€) เชชเซ‚เชฐเชคเชพ เชจเชฅเซ€. เชฌเชงเซ€ เชตเชธเซเชคเซ เชฎเชพเชŸเซ‡.

เชจเช‚เชฌเชฐ เชตเช–เชค เชจเซ‹เช‚เชงเซ‹ เชฐเชพเช‰เชŸเชฐเชจเชพ USB เชชเซ‹เชฐเซเชŸเชฎเชพเช‚ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชต เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชฅเซ€ เช…เชจเซ‡ เชฐเชพเช‰เชŸเชฐเชจเซ€ เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเชตเชพเชฅเซ€ เชคเชฎเชจเซ‡ เชถเซเช‚ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡?

เชฎเซ‹เชŸเซ‡เชญเชพเช—เซ‡, เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชธเชฎเช—เซเชฐ เช‰เช•เซ‡เชฒเชจเซ€ เช•เชฟเช‚เชฎเชค เชฎเชพเชŸเซ‡ เชนเซ‹เชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชซเซ‹เชฐเซเชฎ เชซเซ‡เช•เซเชŸเชฐ เชชเชฃ เชฎเซเช–เซเชฏ เชญเซ‚เชฎเชฟเช•เชพ เชญเชœเชตเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเชพเช‡เชŸ เชชเชฐ เชเช• TP-Link ML3020 เช›เซ‡, เชคเซ‡เชจเชพ เชเช•เชฎเชพเชคเซเชฐ USB เชชเซ‹เชฐเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— 2G/3G เชฎเซ‹เชกเซ‡เชฎ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡, เช† เชฌเชงเซเช‚ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเชพ เชจเชพเชจเชพ เชชเซเชฒเชพเชธเซเชŸเชฟเช• เช•เซ‡เชธเชฎเชพเช‚ เชฒเชชเซ‡เชŸเซ€เชจเซ‡ เช•เซเชฏเชพเช‚เช• เช‰เช‚เชšเชพ, เชŠเช‚เชšเชพ (เชฎเชพเชธเซเชŸ เชชเชฐ) เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชฆเซ‚เชฐ, เช–เซ‚เชฌ เชฆเซ‚เชฐ (เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚, เชจเชœเซ€เช•เชจเชพ เชฎเซ‹เชฌเชพเช‡เชฒ เช“เชชเชฐเซ‡เชŸเชฐ เชฌเซ‡เช เชธเซเชŸเซ‡เชถเชจเชฅเซ€ 30 เช•เชฟเชฎเซ€ เชฆเซ‚เชฐ). เชนเชพ, เชคเชฎเซ‡ USB เชนเชฌเชฎเชพเช‚ เชชเซเชฒเช— เช‡เชจ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชชเซ‹เชฐเซเชŸเชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เช…เชจเซเชญเชต เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช† เชฌเซ‹เชœเชพเชฐเซ‚เชช เช…เชจเซ‡ เช…เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เช›เซ‡.

เชคเซ‡เชฅเซ€, เชฎเซ‡เช‚ เชคเชฎเชจเซ‡ เชฎเชพเชฐเซ€ เชฒเชพเช•เซเชทเชฃเชฟเช• เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹: โ€œเช•เซเชฏเชพเช‚เช• เชฆเซ‚เชฐ, เชฆเซ‚เชฐ, เชเช• เช–เซ‚เชฌ เชœ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ, เชเช•เชฒเซเช‚ เช…เชจเซ‡ เชจเชพเชจเซเช‚ เชฐเชพเช‰เชŸเชฐ Linux เชšเชฒเชพเชตเซ‡ เช›เซ‡. เชฆเชฟเชตเชธเชฎเชพเช‚ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชเช•เชตเชพเชฐ เชคเซ‡ เชœเชพเชฃเชตเซเช‚ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡ เช•เซ‡ เชคเซ‡ "เชœเซ€เชตเช‚เชค" เช›เซ‡ เช…เชจเซ‡, เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹, เชคเซ‡เชจเซ‡ เช†เชฆเซ‡เชถเซ‹ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, "เชฎเชง, เชฐเซ€เชฌเซ‚เชŸ!"

เชšเชพเชฒเซ‹ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€เช:

1) เชฐเชพเช‰เชŸเชฐเชจเซ€ เชฌเชพเชœเซเช, เช•เซเชฐเซ‹เชจ เชฆเซเชตเชพเชฐเชพ, เชฆเชฐ 5/10/1440 เชฎเชฟเชจเชฟเชŸเซ‡, เช…เชฅเชตเชพ เชœเซเชฏเชพเชฐเซ‡ เชชเชฃ เชคเชฎเซ‡ เช‡เชšเซเช›เซ‹, เชคเชฎเชพเชฐเซ‡ wget เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเชฐเซเชตเชฐเชจเซ‡ HTTP เชตเชฟเชจเช‚เชคเซ€ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชตเชฟเชจเช‚เชคเซ€เชจเชพ เชชเชฐเชฟเชฃเชพเชฎเชจเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเชพเชšเชตเซ‹, เชซเชพเช‡เชฒเชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเซ‹. , เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชšเชฒเชพเชตเซ‹.

เชฎเชพเชฐเซ€ เช•เซเชฐเซ‹เชจ เชฒเชพเช‡เชจ เช•เช‚เชˆเช• เช†เชจเชพ เชœเซ‡เชตเซ€ เชฒเชพเช—เซ‡ เช›เซ‡:

เชซเชพเช‡เชฒ /etc/crontabs/root:

  */5 * * * * wget "http://xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php?u=user&p=password" -O /tmp/wa.sh && chmod 777 /tmp/wa.sh && /tmp/wa.sh

, เชœเซเชฏเชพเช‚:
xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai เช เชฎเชพเชฐเชพ เชธเชฐเซเชตเชฐเชจเซเช‚ เชกเซ‹เชฎเซ‡เชจ เช›เซ‡. เชฎเชจเซ‡ เชคเชฐเชค เชœ เชจเซ‹เช‚เชง เชฒเซ‡เชตเชพ เชฆเซ‹: เชนเชพ, เชคเชฎเซ‡ เชธเชฐเซเชตเชฐเชจเซเช‚ เชšเซ‹เช•เซเช•เชธ IP เชธเชฐเชจเชพเชฎเซเช‚ เชธเซเชชเชทเซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชฐเชพเชœเซเชฏ เชธเซเชงเซ€ เช† เช•เชพเชฎ เช•เชฐเชคเชพ เชนเชคเชพ, เชธเช‚เช˜เชฐเซเชทเชจเชพ เชจเซเชฏเชพเชฏเซ€ เช†เชตเซ‡เช—เชฎเชพเช‚, เชนเซเช‚ เช•เชนเซ€เชถ, เชฎเชจเซ‡ เช–เชฌเชฐ เชจเชฅเซ€, เชธเชฟเช‚เชนเชจเซ€ เชเช•เซเชธเซ‡เชธ เช…เชตเชฐเซ‹เชงเชฟเชค เช›เซ‡. DigitalOcean เช…เชจเซ‡ Amazon โ€œเชตเชพเชฆเชณเซ‹โ€ เชจเซ‹ เชนเชฟเชธเซเชธเซ‹. เชœเซ‹ เชคเชฎเซ‡ เชธเชพเช‚เช•เซ‡เชคเชฟเช• เชกเซ‹เชฎเซ‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹, เชœเซ‹ เช†เชตเซ€ เช˜เชŸเชจเชพ เชฌเชจเซ‡, เชคเซ‹ เชคเชฎเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชฌเซ‡เช•เช…เชช เช•เซเชฒเชพเช‰เชก เช‰เชญเชพ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชกเซ‹เชฎเซ‡เชจเชจเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เช‰เชชเช•เชฐเชฃ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชชเซเชจเชƒเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

a.php เช เชธเชฐเซเชตเชฐ-เชธเชพเช‡เชก เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซเช‚ เชจเชพเชฎ เช›เซ‡. เชนเชพ, เชนเซเช‚ เชœเชพเชฃเซเช‚ เช›เซเช‚ เช•เซ‡ เชเช• เชœ เช…เช•เซเชทเชฐเชฅเซ€ เชตเซ‡เชฐเชฟเชฏเซ‡เชฌเชฒเซเชธ เช…เชจเซ‡ เชซเชพเช‡เชฒเชจเชพ เชจเชพเชฎเซ‹เชจเซ‡ เชจเชพเชฎ เช†เชชเชตเซเช‚ เช–เซ‹เชŸเซเช‚ เช›เซ‡... เชนเซเช‚ เชธเซ‚เชšเชจ เช•เชฐเซเช‚ เช›เซเช‚ เช•เซ‡ เช† เชฐเซ€เชคเซ‡ เชตเชฟเชจเช‚เชคเซ€ เชฎเซ‹เช•เชฒเชคเซ€ เชตเช–เชคเซ‡ เช†เชชเชฃเซ‡ เชฅเซ‹เชกเชพ เชฌเชพเช‡เชŸเซเชธ เชธเชพเชšเชตเซ€เช :)
u - เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชจเชพเชฎ, เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชฒเซ‰เช—เชฟเชจ
p - เชชเชพเชธเชตเชฐเซเชก
"-O /tmp/wa.sh" เช เชฐเชฟเชฎเซ‹เชŸ เชฐเชพเช‰เชŸเชฐ เชชเชฐเชจเซ€ เชเช• เชซเชพเช‡เชฒ เช›เซ‡ เชœเซเชฏเชพเช‚ เชธเชฐเซเชตเชฐ เชชเซเชฐเชคเชฟเชธเชพเชฆ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชฐเซ€เชฌเซ‚เชŸ เช†เชฆเซ‡เชถ, เชธเชพเชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชจเซ‹เช‚เชง เชจเช‚เชฌเชฐ เชฌเซ‡: เช†เชน, เชถเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ wget เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ curl เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช, เช•เชพเชฐเชฃ เช•เซ‡ curl เชฆเซเชตเชพเชฐเชพ เชคเชฎเซ‡ https เชตเชฟเชจเช‚เชคเซ€เช“ GET เชธเชพเชฅเซ‡ เชจเชนเซ€เช‚, เชชเชฃ POST เชธเชพเชฅเซ‡ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‹ เช›เซ‹? เช†เชน เช•เชพเชฐเชฃ เช•เซ‡, เชœเซ‚เชจเซ€ เชฎเชœเชพเช•เชจเซ€ เชœเซ‡เชฎ "NE เชฌเชฐเชฃเซ€เชฎเชพเช‚ เชšเชขเซ€ เชœเชพเชฏ เช›เซ‡!" curl เชฎเชพเช‚ เช†เชถเชฐเซ‡ 2MB เช•เชฆเชจเซ€ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เช•เชพเชฐเชฃเซ‡ เชคเซ‡ เช…เชธเช‚เชญเชตเชฟเชค เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เชจเชพเชจเชพ TP-LINK ML3020 เชฎเชพเชŸเซ‡ เช›เชฌเซ€ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซ€ เชถเช•เชถเซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡. เช…เชจเซ‡ wget เชธเชพเชฅเซ‡ - เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡.

2) เชธเชฐเซเชตเชฐ เชฌเชพเชœเซ เชชเชฐ (เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช‰เชฌเซเชจเซเชŸเซ เช›เซ‡) เช†เชชเชฃเซ‡ Zabbix เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚. เชถเชพ เชฎเชพเชŸเซ‡: เชนเซเช‚ เช‡เชšเซเช›เซเช‚ เช›เซเช‚ เช•เซ‡ เชคเซ‡ เชธเซเช‚เชฆเชฐ (เช—เซเชฐเชพเชซ เชธเชพเชฅเซ‡) เช…เชจเซ‡ เช…เชจเซเช•เซ‚เชณ เชนเซ‹เชฏ (เชธเช‚เชฆเชฐเซเชญ เชฎเซ‡เชจเซ‚ เชฆเซเชตเชพเชฐเชพ เช†เชฆเซ‡เชถเซ‹ เชฎเซ‹เช•เชฒเซ‹). Zabbix เชชเชพเชธเซ‡ zabbix เชเชœเชจเซเชŸ เชœเซ‡เชตเซ€ เช…เชฆเซเชญเซเชค เชตเชธเซเชคเซ เช›เซ‡. เชเชœเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ, เช…เชฎเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐ PHP เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‰เชฒ เช•เชฐเซ€เชถเซเช‚, เชœเซ‡ เชœเชฐเซ‚เชฐเซ€ เชธเชฎเชฏเช—เชพเชณเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช…เชฎเชพเชฐเซเช‚ เชฐเชพเช‰เชŸเชฐ เชจเซ‹เช‚เชงเชพเชฏเซ‡เชฒ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เช†เชชเชถเซ‡. เชจเซ‹เช‚เชงเชฃเซ€ เชธเชฎเชฏ, เช‰เชชเช•เชฐเชฃเซ‹ เชฎเชพเชŸเซ‡เชจเชพ เช†เชฆเซ‡เชถเซ‹ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชนเซเช‚ MySQL เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚, เชฒเช—เชญเช— เชจเซ€เชšเซ‡เชจเชพ เชซเซ€เชฒเซเชกเซเชธ เชธเชพเชฅเซ‡ เชเช• เช…เชฒเช— เชŸเซ‡เชฌเชฒ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“:

		CREATE TABLE `users` (
		  `id` varchar(25) NOT NULL,
		  `passwd` varchar(25) NOT NULL,
		  `description` varchar(150) NOT NULL,
		  `category` varchar(30) NOT NULL,
		  `status` varchar(10) NOT NULL,
		  `last_time` varchar(20) NOT NULL, // ะฒั€ะตะผั ะฟะพัะปะตะดะฝะตะณะพ ัะพะตะดะธะฝะตะฝะธั
		  `last_ip` varchar(20) NOT NULL, // IP ะฟะพัะปะตะดะฝะตะณะพ ัะพะตะดะธะฝะตะฝะธั 
		  `last_port` int(11) NOT NULL, // ะฟะพั€ั‚ ะฟะพัะปะตะดะฝะตะณะพ ัะพะตะดะธะฝะตะฝะธั
		  `task` text NOT NULL, // ะทะฐะดะฐั‡ะฐ ะบะพั‚ะพั€ัƒัŽ ะฟะพะปัƒั‡ะฐะตั‚ ั€ะพัƒั‚ะตั€
		  `reg_task` varchar(150) NOT NULL, // "ั€ะตะณัƒะปัั€ะฝะฐั" ะทะฐะดะฐั‡ะฐ, ะตัะปะธ ะผั‹ ะทะฐั…ะพั‚ะธะผ ั‡ั‚ะพะฑั‹ ะทะฐะดะฐั‡ะฐ ะฒั‹ะฟะพะปะฝัะปะฐััŒ ะฒัะตะณะดะฐ ะฟั€ะธ ั€ะตะณะธัั‚ั€ะฐั†ะธะธ
		  `last_task` text NOT NULL, // ะปะพะณ ะทะฐะดะฐั‡
		  `response` text NOT NULL, // ััŽะดะฐ ะฟะธัˆะตั‚ัั ะพั‚ะฒะตั‚ ัƒัั‚ั€ะพะนัั‚ะฒะฐ
		  `seq` int(11) NOT NULL
		) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Git เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชฌเชงเชพ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เช…เชนเซ€เช‚เชฅเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡: https://github.com/BazDen/iotnet.online.git
เชนเชตเซ‡ เชธเชฐเซเชตเชฐ เชฌเชพเชœเซ เชชเชฐ PHP เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ (เชธเซเชตเชฟเชงเชพ เชฎเชพเชŸเซ‡, เชคเซ‡ /usr/share/zabbix/ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชฎเซ‚เช•เซ€ เชถเช•เชพเชฏ เช›เซ‡):

a.php เชซเชพเช‡เชฒ:

<?php
// ะŸะพะปัƒั‡ะฐะตะผ ะฒั…ะพะดะฝั‹ะต ะฟะฐั€ะฐะผะตั‚ั€ั‹: ะธะผั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั, ะฟะฐั€ะพะปัŒ ะธ ัะพะพะฑั‰ะตะฝะธะต ะพั‚ ัƒะดะฐะปะตะฝะฝะพะณะพ ั€ะพัƒั‚ะตั€ะฐ
// ะ—ะฐั‡ะตะผ ะฝัƒะถะตะฝ message ? ะญั‚ะพ ัะฟะพัะพะฑ ะพั‚ะฒะตั‚ะฐ ั€ะพัƒั‚ะตั€ะฐ, ะฝะฐะฟั€ะธะผะตั€ ะตัะปะธ ะฒั‹ ะทะฐั…ะพั‚ะธั‚ะต ะฟะพัะผะพั‚ั€ะตั‚ัŒ ัะพะดะตั€ะถะธะผะพะต ั„ะฐะนะปะฐ ั€ะพัƒั‚ะตั€ะฐ
	$user=$_REQUEST['u'];
	$password=$_REQUEST['p'];
	$message=$_REQUEST['m'];
	
	// ะŸะพะดะบะปัŽั‡ะฐะตะผัั ะบ ะฝะฐัˆะตะน ะฑะฐะทะต ะดะฐะฝะฝั‹ั… (MySQL)
	$conn=new mysqli("localhost","db_login","db_password","DB_name");
	if (mysqli_connect_errno()) {
		exit();
	}
	$conn->set_charset("utf8");
	// ะทะดะตััŒ ะธั‰ะตะผ ะฝะฐัˆ ั€ะพัƒั‚ะตั€ ะฒ ั‚ะฐะฑะปะธั†ะต ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั…
	$sql_users=$conn->prepare("SELECT task, reg_task, response, last_time FROM users WHERE id=? AND passwd=? AND status='active';");
	$sql_users->bind_param('ss', $user, $password);
	$sql_users->bind_result($task, $reg_task, $response, $last_time);
	$sql_users->execute();
	$sql_users->store_result();
	if (($sql_users->num_rows)==1){
		$sql_users->fetch();
		// ะทะดะตััŒ ะผั‹ ั€ะพัƒั‚ะตั€ัƒ ะพั‚ะฟั€ะฐะฒะปัะตะผ ะตะณะพ ะทะฐะดะฐั‡ะธ
		echo $task;
		echo "n";
		echo $reg_task;
		// ะฒะพั‚ ะทะดะตััŒ ะผั‹ ะฟะธัˆะตะผ ะฒั€ะตะผั ะพั‚ะฒะตั‚ะฐ ะธ ัะฐะผ ะพั‚ะฒะตั‚ ั€ะพัƒั‚ะตั€ะฐ
		$response_history="[".date("Y-m-d H:i")."] ".$message;
		// ะทะฐะดะฐั‡ัƒ ะพั‚ะฟั€ะฐะฒะธะปะธ, ั‚ะตะฟะตั€ัŒ ะฝะฐะดะพ ะตะต ัƒะดะฐะปะธั‚ัŒ,ะฐ ะฟะพัะปะต ัƒะดะฐะปะตะฝะธั ะพั‚ะผะตั‚ะธั‚ัŒ ะฒ ะปะพะณะฐั…, ั‡ั‚ะพ ั‚ะฐะบะฐั-ั‚ะพ ะทะฐะดะฐั‡ะฐ ะฒั‹ะฟะพะปะฝะตะฝะฐ
		$last_ip=$_SERVER["REMOTE_ADDR"];
		$last_port=$_SERVER["REMOTE_PORT"];
		$ts_last_conn_time=$last_time;
		$sql_users=$conn->prepare("UPDATE users SET task='', seq=1 WHERE (id=?);");
		$sql_users->bind_param('s', $user);
		$sql_users->execute();
		if (strlen($message)>1){
			$sql_users=$conn->prepare("UPDATE users SET response=?, seq=1 WHERE (id=?);");
			$sql_users->bind_param('ss', $response_history, $user);
			$sql_users->execute();
		}
		// ั‚ะตะฟะตั€ัŒ ะฝะฐะดะพ ัะพั…ั€ะฐะฝะธั‚ัŒ ะฒั€ะตะผั ั€ะตะณะธัั‚ั€ะฐั†ะธะธ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั, ะตะณะพ ะฐะนะฟะธ ะธ ัะพะพะฑั‰ะตะฝะธะต ะพั‚ ะฝะตะณะพ. ะŸะพะบะฐ ั‚ะพะปัŒะบะพ ัะพะพะฑั‰ะตะฝะธะต
		$ts_now=time();
		$sql_users=$conn->prepare("UPDATE users SET last_time=?, last_ip=?, last_port=? WHERE (id=?);");
		$sql_users->bind_param('ssss', $ts_now, $last_ip, $last_port, $user);
		$sql_users->execute();
	}
	// ะตัะปะธ ะผั‹ ะฝะต ะฝะฐัˆะปะธ ั€ะพัƒั‚ะตั€ ะฒ ะฝะฐัˆะตะน ะฑะฐะทะต ะดะฐะฝะฝั‹ั…, ะธะปะธ ะตะณะพ ัั‚ะฐั‚ัƒั "ะฝะตะฐะบั‚ะธะฒะฝั‹ะน", ั‚ะพ ะตะผัƒ ... ะฑัƒะดะตั‚ ะพั‚ะฟั€ะฐะฒะปะตะฝะฐ ะบะพะผะฐะฝะดะฐ reboot....
	// ะŸะพั‡ะตะผัƒ ั‚ะฐะบ ะถะตัั‚ะพะบะพ ? ะŸะพั‚ะพะผัƒ ั‡ั‚ะพ ั€ะพัƒั‚ะตั€ั‹ ะธะฝะพะณะดะฐ ะฟั€ะพะฟะฐะดะฐัŽั‚, ะฐ ัั‚ะพ ะผะฐะปะตะฝัŒะบะธะน ัะฟะพัะพะฑ ะฟั€ะพัƒั‡ะธั‚ัŒ "ะฝะพะฒั‹ั… ะฒะปะฐะดะตะปัŒั†ะตะฒ". 
	else
	{
	echo "reboot";
	}
	$sql_users->close();
	?>

Agent.php เชซเชพเช‡เชฒ (เช† เชเชฌเซเชฌเซ€เช•เซเชธ เชเชœเชจเซเชŸเชจเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡):

<?php
	// ั„ะฐะนะป ะฐะณะตะฝั‚ะฐ Zabbix. ะ”ะฐะฝะฝั‹ะน ัะบั€ะธะฟั‚ ะพะฑั€ะฐั‰ะฐะตั‚ัั ะบ ั‚ะฐะฑะปะธั†ะต users ะธ ะฟะพะปัƒั‡ะฐะตั‚ "1" ะตัะปะธ ัƒัั‚ั€ะพะนัั‚ะฒะพ ั€ะตะณะธัั‚ั€ะธั€ะพะฒะฐะปะพััŒ ั ะผะพะผะตะฝั‚ะฐ ะฟะพัะปะตะดะฝะตะณะพ ะพะฑั€ะฐั‰ะตะฝะธั
	// user ะธ password - ัƒั‡ะตั‚ะฝั‹ะต ะดะฐะฝะฝั‹ะต ะพะฑะพั€ัƒะดะพะฒะฐะฝะธั
	$user = $argv[1];
	$password = $argv[2];
	
	// ะฟะพะดะบะปัŽั‡ะฐะตะผัั ะบ ะฝะฐัˆะตะน ะฑะฐะทะต ะดะฐะฝะฝั‹ั…
	$conn=new mysqli("localhost","db_user","db_password","db_name");
	if (mysqli_connect_errno()) {
		exit();
		}
	$conn->set_charset("utf8");
	$sql_users=$conn->prepare("SELECT seq FROM users WHERE id=? AND passwd=? AND status='active';");
	$sql_users->bind_param('ss', $user, $password);
	$sql_users->bind_result($seq);
	$sql_users->execute();
	$sql_users->store_result();
	// ะพะฑะผะตะฝ ะดะฐะฝะฝั‹ะผะธ ะฟั€ะพะธัั…ะพะดะธั‚ ั‡ะตั€ะตะท ะฟะพะปะต seq. ะŸั€ะธ ั€ะตะณะธัั‚ั€ะฐั†ะธะธ ะถะตะปะตะทะบะฐ ัั‚ะฐะฒะธั‚ ะดะฐะฝะฝะพะต ะฟะพะปะต ะฒ "1"
	if (($sql_users->num_rows)==1){
		$sql_users->fetch();
		echo $seq;
	}
		
	// ะพะฑะฝัƒะปัะตะผ $seq. 
	$sql_users=$conn->prepare("UPDATE users SET seq=0 WHERE id=? AND passwd=? AND status='active';");
	$sql_users->bind_param('ss', $user, $password);
	$sql_users->execute();
	$sql_users->close();
?>		

เชธเชพเชฐเซเช‚, เช…เช‚เชคเชฟเชฎ เชคเชฌเช•เซเช•เซ‹: เชเชœเชจเซเชŸเชจเซ€ เชจเซ‹เช‚เชงเชฃเซ€ เช•เชฐเชตเซ€ เช…เชจเซ‡ เชธเชฎเชฏเชชเชคเซเชฐเช• เช‰เชฎเซ‡เชฐเชตเซเช‚.

เชœเซ‹ เชคเชฎเซ‡ เชนเชœเซ เชธเซเชงเซ€ zabbix เชเชœเชจเซเชŸ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเซเช‚ เชจเชฅเซ€, เชคเซ‹ เชชเช›เซ€:

apt-get install zabbix-agent

เชซเชพเช‡เชฒเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ‹ /etc/zabbix/zabbix_agentd.conf.

เชฒเซ€เชŸเซ€ เช‰เชฎเซ‡เชฐเซ‹:

UserParameter=test,php /usr/share/zabbix/agent.php user password

, เชœเซเชฏเชพเช‚:
เชŸเซ‡เชธเซเชŸ เช เช…เชฎเชพเชฐเชพ เชเชœเชจเซเชŸเชจเซเช‚ เชจเชพเชฎ เช›เซ‡
"php /usr/share/zabbix/agent.php เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชชเชพเชธเชตเชฐเซเชก" - เช‰เชชเช•เชฐเชฃ เชจเซ‹เช‚เชงเชฃเซ€ เชกเซ‡เชŸเชพ เชธเซ‚เชšเชตเชคเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡.

เชšเชพเชฐเซเชŸ เช‰เชฎเซ‡เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡: zabbix เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เช–เซ‹เชฒเซ‹, เชฎเซ‡เชจเซเชฎเชพเช‚เชฅเซ€ เชชเชธเช‚เชฆ เช•เชฐเซ‹:
เชธเซ‡เชŸเชฟเช‚เช—เซเชธ -> เชจเซ‡เชŸเชตเชฐเซเช• เชจเซ‹เชกเซเชธ -> เชจเซ‡เชŸเชตเชฐเซเช• เชจเซ‹เชก เชฌเชจเชพเชตเซ‹. เช…เชนเซ€เช‚ เชจเซ‡เชŸเชตเชฐเซเช• เชนเซ‹เชธเซเชŸ, เชคเซ‡เชจเชพ เชœเซ‚เชฅ เช…เชจเซ‡ เชกเชฟเชซเซ‹เชฒเซเชŸ เชเชœเชจเซเชŸ เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเซเช‚ เชจเชพเชฎ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡:

เชชเซ‹เชฐเซเชŸ 80 เชฆเซเชตเชพเชฐเชพ Lunix/OpenWrt/Lede เช†เชงเชพเชฐเชฟเชค เช‰เชชเช•เชฐเชฃเซ‹เชจเซเช‚ เชฐเชฟเชฎเซ‹เชŸ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เช…เชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ...

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เช† เชจเซ‡เชŸเชตเชฐเซเช• เชจเซ‹เชก เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพ เชเชฒเชฟเชฎเซ‡เชจเซเชŸ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชฌเซ‡ เช•เซเชทเซ‡เชคเซเชฐเซ‹ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ‹: "เช•เซ€" - เช† เชฌเชฐเชพเชฌเชฐ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เช›เซ‡ เชœเซ‡ เช†เชชเชฃเซ‡ /etc/zabbix/zabbix_agentd.conf เชซเชพเช‡เชฒเชฎเชพเช‚ เชฒเช–เซเชฏเซเช‚ เช›เซ‡ (เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชคเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เช›เซ‡), เช…เชจเซ‡ "เช…เชชเชกเซ‡เชŸ เช…เช‚เชคเชฐเชพเชฒ" - เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ 5 เชฎเชฟเชจเชฟเชŸ เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซเชฏเซเช‚ เช›เซ‡. , เช•เชพเชฐเชฃ เช•เซ‡ เช…เชจเซ‡ เชธเชพเชงเชจเชธเชพเชฎเช—เซเชฐเซ€ เชชเชฃ เชฆเชฐ เชชเชพเช‚เชš เชฎเชฟเชจเชฟเชŸเซ‡ เชเช•เชตเชพเชฐ เชธเชฐเซเชตเชฐ เชชเชฐ เชจเซ‹เช‚เชงเชพเชฏเซ‡เชฒ เช›เซ‡.

เชชเซ‹เชฐเซเชŸ 80 เชฆเซเชตเชพเชฐเชพ Lunix/OpenWrt/Lede เช†เชงเชพเชฐเชฟเชค เช‰เชชเช•เชฐเชฃเซ‹เชจเซเช‚ เชฐเชฟเชฎเซ‹เชŸ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เช…เชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ...

เชธเชพเชฐเซเช‚, เชšเชพเชฒเซ‹ เชเช• เช—เซเชฐเชพเชซ เช‰เชฎเซ‡เชฐเซ€เช. เชนเซเช‚ เชฐเซ‡เชจเซเชกเชฐเชฟเช‚เช— เชถเซˆเชฒเซ€ เชคเชฐเซ€เช•เซ‡ "เชญเชฐเซ‹" เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚.

เชชเซ‹เชฐเซเชŸ 80 เชฆเซเชตเชพเชฐเชพ Lunix/OpenWrt/Lede เช†เชงเชพเชฐเชฟเชค เช‰เชชเช•เชฐเชฃเซ‹เชจเซเช‚ เชฐเชฟเชฎเซ‹เชŸ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เช…เชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ...

เช†เช‰เชŸเชชเซเชŸ เช•เช‚เชˆเช• เช–เซ‚เชฌ เชœ เชฒเซ‡เช•เซ‹เชจเชฟเช• เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚:

เชชเซ‹เชฐเซเชŸ 80 เชฆเซเชตเชพเชฐเชพ Lunix/OpenWrt/Lede เช†เชงเชพเชฐเชฟเชค เช‰เชชเช•เชฐเชฃเซ‹เชจเซเช‚ เชฐเชฟเชฎเซ‹เชŸ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เช…เชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ...

เชตเชพเชœเชฌเซ€ เชชเซเชฐเชถเซเชจ เชฎเชพเชŸเซ‡: "เชถเซเช‚ เชคเซ‡ เชฎเซ‚เชฒเซเชฏเชตเชพเชจ เชนเชคเซเช‚?", เชนเซเช‚ เชœเชตเชพเชฌ เช†เชชเซ€เชถ: เชธเชพเชฐเซเช‚, เช…เชฒเชฌเชคเซเชค, เชฒเซ‡เช–เชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ "เชธเชพเชฏเช•เชฒ เชฌเชจเชพเชตเชตเชพเชจเชพ เช•เชพเชฐเชฃเซ‹" เชœเซเช“.

เชœเซ‹ เชฎเชพเชฐเซ‹ เชชเซเชฐเชฅเชฎ เช—เซเชฐเชพเชซเซ‹เชฎเซ‡เชจเชฟเชฏเชพเช• เช…เชจเซเชญเชต เชตเชพเชšเช•เซ‹เชจเซ€ เชฐเซเชšเชฟ เชœเช—เชพเชกเซ‡ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชจเซ€เชšเซ‡เชจเชพ เชฒเซ‡เช–เซ‹เชฎเชพเช‚ เชนเซเช‚ เชฆเซ‚เชฐเชธเซเชฅ เชธเชพเชงเชจเซ‹เชจเซ‡ เช†เชฆเซ‡เชถเซ‹ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเซ‹เช•เชฒเชตเชพ เชคเซ‡ เชตเชฐเซเชฃเชตเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เช…เชฎเซ‡ เชฐเชพเช‰เชŸเชฐเช“เชเชธ (เชฎเชฟเช•เซเชฐเซ‹เชŸเชฟเช•) เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช‰เชชเช•เชฐเชฃเซ‹ เชฎเชพเชŸเซ‡เชจเซ€ เชธเชฎเช—เซเชฐ เชฏเซ‹เชœเชจเชพเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซเช‚ เชชเชฃ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซเชฏเซเช‚.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹