แแแ แแแขแแแแก แแ แแก แจแแแแแแแแแแแก แแแแแฌแแแแแแ แแแแแฆแ LTE แแแแแแแก แกแแฉแฅแแ แแก แกแแแแแ แแแฌแงแแแแแแแแก แจแแแฃแจแแแแแแจแ แ แแแแแแแแ แคแแญแฃแ แ แแแแ แแขแแ แแกแแแแก.
แแแแฎแแแ แแแแแก แกแฃแ แแ แจแแแคแแกแแแแแ แกแฎแแแแแกแฎแแ แกแแขแแแแแแแฃแแแแแชแแ แแแแ แแขแแ แแก แกแแฉแฅแแ แ แกแฎแแแแแกแฎแแ แแแแแ แแคแแฃแ แแแแแแแก, แ แแแ แแแแแ, แ แแแแแ แคแแญแฃแ แ แแแแ แแขแแ แ แแงแ แแแกแแแแก แงแแแแแแ แแแขแแแแแฃแ แ LTE แแแแจแแ แแก แแแแแงแแแแแแ แแฆแญแฃแ แแแแแแแก แแแงแแแแแแกแแก, แแแแแแแแแ, แแแแแ แแแฃแฌแงแแแแแแแกแแแแก. แแแแแแ แแฃแแแ, แแ แแแแแแ แฃแแแ แแแแแแ แแแฃแแแงแ แ แแช แจแแแซแแแแ แแแ แขแแแแ แแ แแแคแแ, แซแแแ แแแฆแแ แแแฃแแ แแฆแญแฃแ แแแแแแแก แแแ แแจแ.
แแแจแแแแ แแแขแงแแ, แ แแ แแแแชแแแ แแ แแ แแก แฃแแแ แขแแแแกแ แแ แชแแแแแก แแแขแแแกแแฃแ แ, แแแขแงแแแ แ แ แแ แแแแแแแแก แฌแแแแฌแงแแ แแ แ แแแแ แแแแแแแแ แ แแกแแแ. แแแจ, แฌแแแแแแ.
แจแแแแจแแแ
LTE แแแแจแแ แแก แกแแฉแฅแแ แแก แแแแแแแ แซแแแแแ แ แแฃแแ แกแแแแแฎแแ: แแฅแแแ แฃแแแ แแแ แฉแแแ แกแฌแแ แ แแฆแญแฃแ แแแแแแ แแ แแแแแแแแก แขแแฅแแแแ, แแกแแแ แแแ แแแ แแแกแแแแแ แคแแญแฃแ แ แฅแกแแแแก แขแแแแแแแแ แแ แคแฃแแฅแชแแแแแ แแแ. แแแ แแ แแแแกแ, แกแแฉแฅแแ แแแ แจแแแซแแแแ แแแแแแแ แแฅแแแแแก แ แแแแแแแแ แคแแฅแขแแ แแ: แแแแแแแขแแแแก แ แแแแแแแแ แฃแฏแ แแแแ, แแแแแแแก แแแ แแแแแ, แแฃแแแแช แฃแฏแ แแแแแแ แฃแฏแ แแแแแแ, แกแแฉแฅแแ แ แจแแแซแแแแ แแแแแแ แแ แแแแกแฎแแแแแแแแแแก แฅแกแแแแก แขแแแแแแแแแก แแแแ. แแแแแแแ, แแก แแ แแก แแ แแแแแแ แแแแ แ แแแแแแแแแ แฃแชแแแแแแแแ แแ แแฎแแแแ แขแแแแแแแแก แแแแ แแขแแ แก แจแแฃแซแแแ แแแกแ แกแฌแแ แแ แแแแแญแ แ.
แแแแแแแแ แแแแแ แแแแฎแแแ แแแแแก แแฎแแแแ แแแแ แแขแแ แแแแก แขแแแแคแแแแแแ แกแฃแ แแ แแฃแ แแแ แแก แแแ แแแ, แแแ แแแแแ แขแแแแคแแแแ แแแแแแแแแ แแ แจแแแแแ แกแแฉแฅแแ แแก แแแแแแแแก แจแแแแแแแ แแแฃแแแฃแฅแจแ แฉแแฌแแ แ. lte แฅแกแแแแแแก แกแแฉแฅแแ แแก แแแแแแแแก แฉแแแ แแแแแกแแแแแ, แแฃแแชแ แแแแแแฃแ แ แแ แแ แแก, แแ แแแแแแแก แแแแแ แแแก.
แแ แแแก แฃแฅแแแแแแแก แแแแ แแแแแฆแ แแแแแฌแงแแแขแแแแแแแ แแ แ แแแฎแแ แฎแแแฃแแแแแก แแ แแ แแฅแขแแแฃแแแแแก, แแ แแแแ แแแแแแแแ แแแแก แกแแฉแฅแแ แแก แกแแกแแ แแแแแแ. แแแแแแแแแ, แกแแแแ แแกแแแ แ ssh แแแแแแงแแแแแแแ แแแกแขแแแชแแฃแ แ แฌแแแแแแกแแแแก, แฃแคแ แ แแ แแฅแขแแแฃแแ VPN-แแก แแแชแแแแ, แกแแ แแแ แแก แแ แแแแแแฃแแ แแแแแแแแฃแแแฃแ แ แแแแแแขแแก แแแงแแแแแแแ แแ แแแก แแแแแแแแก แแแแแแ.
แขแแฅแแแแฃแ แ แแแแแแแแ
แ แแแแ แช แกแขแแขแแแจแแ แแแแฅแแแแ
แขแแฅแแแแฃแ แ แแแแแแแแ แกแแแแแแ แแแ แขแแแ แแงแ, แชแแขแแก แแแแแคแแ แแแแแ แกแแแแแแ แแแแฎแแแ แแแแแก แแแกแแแแแแ. แขแแฅแแแแฃแ แ แแแแแฌแงแแแขแแแแแแแแกแ แแ แแฆแญแฃแ แแแแแแแก แแ แฉแแแแแ แแแแฎแแแ แแแแแก แแแแ แแงแ แแแแแ แแแฎแแแ. แแกแ แ แแ, แแแแแ แขแแฅแแแแฃแ แ แกแแแชแแคแแแแชแแ, แงแแแแ แแแแขแแแชแแแแก แจแแแแแ:
แแแคแฃแซแแแแฃแแแ แแ แแ แแแคแแก แแแแแแฃแขแแ แแ แแแ 2 แแแแแแแแ แกแแฉแฅแแ แแก แขแแกแขแแ แ lte แแแแจแแ แแแแกแแแแก H แแแแแแแก แกแแจแฃแแแแแแuawei e3372h - 153 แ แแแแแแแแ แขแแแแแแแแก แแแแ แแขแแ แ (แแ แแแแแ n-แแแ). แแกแแแ แแฃแชแแแแแแแแ แแแแ แแแแแขแแแแก แแแฆแแแ UART-แแ แแแแแแจแแ แแแฃแแ GPS แแแแฆแแแแแแ. แแแแแแแแ แกแแฉแฅแแ แแก แแแแแแแแแ แกแแ แแแกแแก แแแแแงแแแแแแ
www.speedtest.net แแ แแแแแแแกแแ แแกแแแ แแกแแ แชแฎแ แแแจแ:
แชแฎแ แแแ csv แคแแ แแแขแจแ. แจแแแแแ แแแแแแแแแ แแก แแแจแแแ แแแแฅแขแ แแแฃแแ แคแแกแขแแ แงแแแแ 6 แกแแแแจแ. แจแแชแแแแแก แจแแแแฎแแแแแจแ, แแแชแแแชแแแ LED, แ แแแแแแช แแแแแแจแแ แแแฃแแแ GPIO-แกแแแ.
แแ แแฆแแฌแแ แ แขแแฅแแแแฃแ แ แแแฎแแกแแแแแแแแแ แฃแคแแกแ แคแแ แแแ, แแ แแแแแ แแแแขแแแชแแแแก แจแแแแแ. แแแแ แแ แแแแแแแแแก แแแแจแแแแแแแ แฃแแแ แฉแแแก. แงแแแแแคแแ แแ แแ แแ แแแแ แ แแงแ แแแชแแแฃแแ. แแแแ แแ แกแแแแแแแแแแจแ แแก แกแแแ แแแแ แ แแแแ แซแแแแ. แแก แแแแก แแแแแแแแกแฌแแแแแแ, แ แแ แแ แแแแก แแแแแแแแแแแ แแฎแแแแ แฉแแแ แแแแแแ แ แกแแแฃแจแแแก แจแแแแแ แแ แจแแแแ-แแแแ แแก.
แแฅแแ แแแแแ แแแแแ แแ แแฎแแ แแแแแแแฎแแแแ แงแฃแ แแแฆแแแ แแ แคแแฅแขแแ, แ แแ แแแแฎแแแ แแแแแ แฌแแแแกแฌแแ แจแแแแแฎแแแ แกแแฉแฅแแ แแก แกแแแแแ แกแแ แแแกแแกแ แแ แแแแ แแขแฃแ แแก แแแแแงแแแแแแแ, แ แแแแช แแแแจแแแแแแแแแ แจแแแฆแฃแแ แฉแแแ แจแแกแแซแแแแแแแแแ. แแแฃแฏแแขแแช แจแแแฆแฃแแฃแแ แแงแ, แแแแขแแ แแแแกแแแฃแแ แแแฃแแ แแ แแคแแ แ แจแแแซแแแ. แแแแขแแ แแ แฌแแกแแแแ แฃแแแ แแแแแแแแจแ.
แแ แฅแแขแแฅแขแฃแ แ แแ แแแแแแแแ แแแ
แกแฅแแแ แแแ แขแแแ แแ แแแกแแแแแแ. แแแแขแแ, แแแแกแแแฃแแ แแแฃแแ แแแแแแขแแ แแก แแแ แแจแ แแแแขแแแแ.
แแแแแแฌแงแแแขแ แแแแแ แแ แแแฅแขแ แแแแแแฎแแ แชแแแแแแแแ แแแแแแจแ, แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแ แแแแจแ แแแแแแแแ แแแแก แแแแแชแแแแแแ แกแแแ แแแ แแ แแฅแแแแ. แแ แแแแ แฉแแ แแก, แ แแแแแ แแงแ แฃแแแ แแแ แแแ แแแแแแแแ แแ แแแแแฌแงแแแขแแแแแแแ, แ แแแแแแกแแช แจแแแซแแแ แแแแแแแแ แแแแก แแแฉแฅแแ แแแ. แแแแขแแ, แงแแแแ แแ แแคแแกแแแแแ แแ แแแ แแแแกแขแก แแแฎแแ, แแ แแแแแชแฎแแก แแแแแแจแ แแแแแแแแ แแแแก แฉแแแ แแแ แแแแ แแแแแชแแแแแแ แแ แงแแแแแแแแก แกแแแแแแแแแแ แแแแแกแแแ แแแแกแขแ แฃแฅแชแแฃแ แแ แแขแแแแก แฉแแแ แฃแแแ แแแแก แแแกแแฃแแฏแแแแกแแแแแ.
แแกแแแ แแ แแ แแชแแกแจแ แแฆแแแแแฉแแแ, แ แแ แแแแแแก แแฅแแก แแ แ แแแจแแแแฃแแ แแแ แกแแ 2 แแ 3, แ แแก แจแแแแแแแแช แแ แแแแ แฉแ แแแกแแแแแ.
แแแแ แแขแฃแ แแก แแแแแซแแแ
แแ แแกแแ แแฃแแแแแ vim2
แแแแแแ แแแแฅแแแแ แแแฉแฃแฅแแก แแ แแแแ แขแแแแ แแแแแแฃแขแแ แ
แจแแกแแแแจแแแแ, แซแแแแ แ แแแแแ แแ แแชแแกแแ แ แญแแแแแแ แกแแฎแแแกแแแแก แแ SMART-TV-แกแแแแก, แแแแ แแ แฃแแแแฃแ แแกแแ แจแแฃแคแแ แแแแแ แแ แแแแชแแแแกแแแแก, แแ, แแแฅแแแ, แชแฃแแแ แจแแกแแคแแ แแกแ. แแแแแแแแแ, แแแกแ แแแแแแ แ OS แแ แแก Android, แฎแแแ Linux แแ แแก แแแแ แแแ OS แแ, แจแแกแแแแแแกแแ, แแ แแแแ แแซแแแแ แแแ แแแขแแแก แงแแแแ แแแแแซแแกแ แแ แแ แแแแแ แแก แแแฆแแแฎแแ แแกแฎแแแ แแฃแจแแแแแแ Linux-แแก แฅแแแจ. แแ แแ แแแแ แแฃแแแ, แ แแ แแแแแแ แแ แแ แแแแแแ แแแแแแจแแ แแแฃแแ แแงแ แแ แแแแขแคแแ แแแก USB แแ แแแแแ แแแแแ, แแแแขแแ แแแแแแแแ แแ แแฃแจแแแแแแแ แแกแ, แ แแแแ แช แแแกแแแแแแแแ แแงแ แแ แแแคแแแ. แแแก แแกแแแ แแฅแแก แซแแแแแ แชแฃแแ แแ แแแแแคแแแขแฃแแ แแแแฃแแแแขแแชแแ, แแแแขแแ แแแแแแฃแ แแแแ แแชแแแก แแแแ แแ แ แแแกแญแแ แแ แแแฅแแแแก แแแแฎแ แแก. GPIO-แกแแแ แฉแแแฃแแแแ แแ แแฃแจแแแแแกแแช แแ แแแแ แ แกแแกแฎแแ แฌแแฃแฆแแ. แแแแแแแแแ, แ แแแแแแแแ แกแแแแ แแแแญแแ แแ LED-แแก แแแงแแแแแ. แแแแ แแ, แแแแแฅแขแฃแ แ แ แแ แแแงแแ, แคแฃแแแแแแแขแฃแ แแ แแ แแงแ แแแแจแแแแแแแแแ, แ แแแแ แ แแ แแ แแแคแ แแงแ, แแแแแแ แ แแก แแงแ, แ แแ แแฃแจแแแแแ แแ แแงแ USB แแแ แขแแแ.
แแแ แแแ แ แแแจแ, แแ แฃแแแ แแแแแงแแแ Linux แแ แแแคแแแ. แแแแกแแแแก, แ แแ แงแแแแแกแแแแก แแ แแกแแแ แแแแแแแก, แแแแช แแ แแ แแแแแ แแแคแแก แกแแกแขแแแแกแแแ แแแฃแแแแแแแแแ, แแ แแฌแแ แแ แแแแก.
Linux-แแก แแแงแแแแแแก แแ แ แแแ แแแแขแ แแ แกแแแแแก: แแแ แ SD แแแ แแแแ แแ แจแแแ MMC-แแ. แแ แแ แกแแฆแแแ แแแแแขแแ แ แแแแก แแแ แแแแแแจแ, แแฃ แ แแแแ แแแแแแแแแแแแ แแแ แแแ แแแแแ, แแแแขแแ แแแแแแฌแงแแแขแ แแแกแ แแแงแแแแแ MMC-แแ, แแฃแแชแ แแญแแแแ แแจแแ แแแแ แแ แฃแคแ แ แแแแแแ แแฅแแแแแแ แแแ แ แแแ แแแแแ แแฃแจแแแแ.
firmware-แแก แจแแกแแฎแแ
- แฎแแแกแแฌแงแแก แแแแ GND: <โ> VIM-แแก GPIO-แแก Pin17
- แฎแแแกแแฌแงแแก PIN TXD: <โ> VIM-แแแแก GPIO-แแก Pin18 (Linux_Rx)
- แฎแแแกแแฌแงแแก PIN RXD: <โ> PIN19 VIM-แแแแก GPIO-แแแ (Linux_Tx)
- แฎแแแกแแฌแงแแก แแแแแแ แแแ VCC: <โ> VIM-แแแแก GPIO-แแก Pin20
แ แแก แจแแแแแแแช แฉแแแแแขแแแ แแ firmware
แแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแขแแแ แแแแกแแแแก แแ แแญแแ แแแแ แแแแฃแแแแฃแ แ แแ แแแ แแแแแ. แแแขแ แแแขแแแ แแแแก แจแแกแแฎแแ
git clone https://github.com/khadas/utils
cd /path/to/utils
sudo ./INSTALL
แแแแ... แแ แแคแแ แ แแฃแจแแแแก. แ แแแแแแแแ แกแแแแ แแแแฎแแ แฏแ แแแกแขแแแแชแแแก แกแแ แแแขแแแแก แ แแแแฅแขแแ แแแแจแ, แ แแแ แงแแแแแคแแ แ แกแฌแแ แแ แแแแแงแแแแแแแ. แแ แแแฎแกแแแก แแฅ แ แ แแแแแแแแ, แแแแ แแ แชแแ แแแช แแงแ แชแฎแแแแแแ. แแกแ แ แแ แคแ แแฎแแแแ แแงแแแ. แแแแ แแ แแ แแแแฃแแแแฃแ แ แกแแจแฃแแแแแแแแก แแแ แแจแ แแแ แ แแ แแฅแแก vim2-แแก แจแแแแแแ แฌแแแแแแก. แฏแแแแ แแแก แกแแแ แแแ แแ แแ แแแ!
แฏแแฏแแฎแแแแก แจแแแแ แฌแ แแก, แกแแ แแแขแแก แแแแคแแแฃแ แแชแแแกแ แแ แแแกแขแแแแชแแแก แจแแแแแ, แแแแแฆแ แกแแแฃแจแแ แแแแฃแแแแฃแ แ แกแแจแฃแแแแแแแแก แแแแแขแ. แแแคแ USB-แแ แแแแแแแแจแแ แ แแแแฃแฅแกแแก แแแแแแฃแขแแ แแ แแ แแกแแแ แแแแแแแแจแแ แ UART แแแแแ แแแชแแแฃแแ แกแฅแแแแก แแแฎแแแแแ.
แแ แแแงแแแแ แฉแแแก แกแแงแแแ แแ แแแแแแแแแก แขแแ แแแแแแก 115200 แกแแฉแฅแแ แแ, แแแแ แแขแฃแ แแก แแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แจแแชแแแแแแแก แแแแขแ แแแแก แแแ แแจแ. แแ แแแแแฌแงแแ.
VIM2-แแก UART แขแแ แแแแแแจแ แฉแแขแแแ แแแแกแแก, แแ แแแญแแ แแแแแแจแก, แ แแแแ แแชแแ spacebar, แฉแแขแแแ แแแแก แจแแกแแฉแแ แแแแแ. แแแก แจแแแแแ, แ แแช แฎแแแ แแแแแฉแแแแแ
kvim2#
แจแแแแงแแแ แแ แซแแแแแแก:
kvim2# run update
แฐแแกแขแแ, แกแแแแแแแช แแขแแแ แแแแ, แแแกแ แฃแแแ:
burn-tool -v aml -b VIM2 -i VIM2_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.img
แแก แแ แแก แแก, แคแฃ. แจแแแแแแฌแแ, แแแคแแแ แแ แแก แแแแฃแฅแกแ. แจแแกแแแ/แแแ แแแ khadas:khadas.
แแแแก แจแแแแแ, แ แแแแแแแแ แแชแแ แ แกแแฌแงแแกแ แแแ แแแแขแ แ. แจแแแแแแแ แแฃแจแแแแแกแแแแก, แแ แแแแแ แแ แแแ แแแ แกแฃแแแกแแแแก (แแแแฎ, แแ แ แฃแกแแคแ แแฎแ, แแแแ แแ แแแกแแฎแแ แฎแแแแแ).
sudo visudo
แแแกแฌแแ แแ แฎแแแก แคแแ แแแจแ แแ แแแแแฎแแ
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
แแแ แ แแแแแแแแแแ แแแแแแก แแชแแแ, แ แแ แแ แ แแแกแแแแจแ แแงแแก, แแแ แแ แแ แแแแแฉแจแ แแฅแแแแ.
sudo timedatectl set-timezone Europe/Moscow
แแฃ
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
แแฃ แแแแแญแแ แแแแแ, แแ แแแแแแงแแแแ แแก แแแคแ; Raspberry Pi แฃแแแแแกแแ. แแแขแแแกแแแ.
แแแแแแ Huawei e3372h โ 153
แแก แแแแแแ แฉแแแแแแก แกแแกแฎแแแก แแแแจแแแแแแแแแ แฌแงแแ แ แแงแ แแ, แคแแฅแขแแแ แแแแ, แแแแแ แแ แแแฅแขแแก แแแแแแ แแแแ แแฅแชแ. แแแแแแแ, แแ แแแฌแงแแแแแแแแแแก แกแแฎแแแฌแแแแแ "แแแแแแ" แกแแแ แแแ แแ แแกแแฎแแแก แกแแแฃแจแแแก แแ แกแก: แแก แแ แแก แแซแแแแ แ แแแแแแแแ, แแ แแแแ แแขแฃแ แฃแ แแแฌแแแก แแฅแแก แแแแแแแแขแฃแ แ แแแฌแงแแแแแแแ, แ แแแแแแช แแแแแ CD-ROM-แแ แแ แแก แแ แแแแแ แแแแก แแแกแแงแแแแแแแ. แแ แจแแแแแ แแแแแแแก แฅแกแแแแก แแแ แแแแก แ แแแแแจแ.
แแ แฅแแขแแฅแขแฃแ แฃแแแ, Linux แแแแฎแแแ แแแแแก แแแแแกแแแ แแกแแ, แงแแแแ แแแ แแแแขแ แแก แจแแแแแ แแกแ แแแแแแงแฃแ แแแ: แแแแแแแก แแแแ แแแแแก แจแแแแแ แแแฅแแก eth* แฅแกแแแแก แแแขแแ แคแแแกแ, แ แแแแแแช dhcp-แแก แกแแจแฃแแแแแแ แแฆแแแก IP แแแกแแแแ แแก 192.168.8.100 แแ แแแแฃแแแกแฎแแแ แแแ แแแญแแก. แแ แแก 192.168.8.1.
แแ แงแแแแแแ แแแแจแแแแแแแแแ แแแแแแขแ! แแแแแแแก แแก แแแแแแ แแแ แแฃแจแแแแก แแแแแแแก แ แแแแแจแ, แ แแแแแแช แแแแขแ แแแแแแ AT แแ แซแแแแแแแแ. แงแแแแแคแแ แ แแแแ แแ แฃแคแ แ แแแ แขแแแ แแฅแแแแแแ, แจแแฅแแแแแ PPP แแแแจแแ แแแ แแแแแแฃแแ แแแแแแแกแแแแก แแ แจแแแแแ แแแฃแจแแแแ แแแแแแ. แแแแ แแ แฉแแแก แจแแแแฎแแแแแจแ, โแแแแแแโ (แฃแคแ แ แแฃแกแขแแ, Linux-แแก แแงแแแแแแแ udev-แแก แฌแแกแแแแก แแแฎแแแแแ), แฅแแแแก eth แแแขแแ แคแแแกแก แแ แแแแญแแแก แแแก IP แแแกแแแแ แแก dhcp-แแก แกแแจแฃแแแแแแ.
แจแแแแแแแ แแแแแแฃแแแแแก แแแแแแแ แแกแแชแแแแแแแ, แแแ แฉแแแ แแแแแแฌแงแแ แกแแขแงแแ โแแแแแแโ แแ แแฅแแแ แฅแกแแแแก แแแ แแแ แแ แแแ แแแญแ, แ แแแแแ แแ แกแแแแแแ, แแก แแ แแก แแฎแแแ แฅแกแแแแก แแแ แแแแก แแแ แแแญแแกแแแ แแแแแแจแแ แแแ.
แ แแแแกแแช แแ แแก แแ แแ แแแแแแ, แแก แแ แแฌแแแแก แ แแแแ แแแแกแแแฃแแ แแแฃแ แแ แแแแแแแก, แแแแ แแ แ แแแแกแแช แแ แแก แแ แแแ แแแขแ, แแแ แซแแ, n-แชแแแ, แฉแแแแแ แจแแแแแแ แฅแกแแแแก แกแฃแ แแแ.
แแแฃ n แฅแกแแแแก แแแ แแแ, แแแแแ IP แแแกแแแแ แแแ, แแแแแแฃแแก แแแแแ แแแแฃแแแกแฎแแแแ แแแ แแแญแ. แแแแ แแ แกแแแแแแแแแแจแ, แแแแแแฃแแ แแแแแแแ แแแแแแจแแ แแแฃแแแ แกแแแฃแแแ แแแแ แแขแแ แแแ.
แแแแแแแแ แแแแแ, แแ แแฅแแแแ แแแ แขแแแ แแแแแกแแแแแ: ifconfig แแ ip แแ แซแแแแแแก แแแแแงแแแแแแ, แแแแแ แแแ แงแแแแ แแแขแแ แคแแแกแ แแ แฃแแ แแแแ แฉแแ แแแ แแ แแ แแแแแก แแฎแ แแ แแ แจแแแแแฌแแแ แแแ. แแแแแกแแแแแ แงแแแแแกแแแแก แแแ แแ แแงแ, แแแ แแ แแแแกแ, แ แแ แแแแแ แแแแก แแแแแแขแแแจแ แแแ แแแฎแแ แฎแแแแ แแแฌแงแแแแแแแแก แแแแแแจแแ แแแแก. แแ แ แแแแแ แแแแแ แแแ แฎแจแแ แ แแ แกแฌแ แแคแแ, แแ แ แแแแฃแ แแ แกแแแ แแแ แแ แแฅแแแแ แแแแแแจแแ แแแแก แจแแกแแซแแแแแแแ.
แแแแขแแ, แแ แแแแ แฉแแ แแแแแแแก IP แแแกแแแแ แแแแแก แฎแแแแ แจแแชแแแ แแ แจแแแแแ แขแ แแคแแแแก แแแ แแแ แแแ แจแ แฃแขแแแแชแแแก แแแ แแแแขแ แแแแก แแแแแงแแแแแแ.
แแแแ แแ แแแกแ แฃแแแแฃแแ แฉแแแ แแ แแแแแแแแ แแแแแแแแแแ: แแแแแก แแ แแแแแแแแแก แจแแแแฎแแแแแจแ, แแกแแแ แแจแแแแแแแแ แแ แกแแญแแ แ แแงแ USB แแแ แแก แแแ แแ แกแขแแแแแฃแ แ แแแแแแก แฌแงแแ แ. แแ แแแแแแฌแงแแแขแ แแก แแ แแแแแแ แแแแฅแขแ แแแแแ แแแแก แแแ แแแแแ แแแ แแแ แแงแแ แ แจแแแฃแฆแแแแ. แแแแแ แแ แแ แแ แแแแแแ, แ แแแแแแช แจแแแฎแแแ แแ แ แแแแแแแช แแแแคแฃแญแ แแแแแ แแ แแแฅแขแ: แแแฌแงแแแแแแแแก แแแแแขแแแ แแแแก แแ แชแแแ แแแฌแงแแแแก แจแแแแแ, แงแแแแ แแแแแแ แแ แแฅแแ แแฆแแแฉแแแแแ แแ แแ แ แงแแแแแแแแก, แแ แแ แแแ แแแแแแแแแ, แ แแขแแ แแแฎแแ แแก แแ แ แ แแแแแ แแแแแ. แแแแ แแ แแแ แแแ แ แแแจแ.
แแแแกแแแแก, แ แแ แแแแแแแ แกแฌแแ แแ แแแฃแจแแแก, แแแแแงแแแ usb-modeswitch แแแแแขแ.
sudo apt update
sudo apt install -y usb-modeswitch
แ แแก แจแแแแแแแช, แแแแแแจแแ แแแแก แจแแแแแ, แแแแแแ แกแฌแแ แแ แแฅแแแแ แแแแแแแแแแแ แแ แแแแคแแแฃแ แแ แแแฃแแ udev แฅแแแกแแกแขแแแแก แแแแ . แแแแแฌแแแ แฃแแ แแแแ แแแแแแแก แจแแแ แแแแแ แแ แแแ แฌแแฃแแแแแแ, แ แแ แฅแกแแแ แแแแแฉแแแแแ.
แแแแแ แแ แแ แแ แแแแแแ, แ แแแแแแช แแแ แแแแแแแแ แ: แ แแแแ แแแแแฆแ แแ แแแแแแแแแ แแ แแแแ แแขแแ แแก แกแแฎแแแ, แ แแแแแแแช แแแฃแจแแแแ? แแแแ แแขแแ แแก แกแแฎแแแก แจแแแชแแแก แแแแแแแก แแแ แแแขแแ แคแแแกแ 192.168.8.1. แแก แแ แแก แแแแแแแฃแ แ แแแ แแแแ แแ, แ แแแแแแช แแฆแแแก แแแแแชแแแแแก Ajax-แแก แแแแฎแแแแแก แกแแจแฃแแแแแแ, แแกแ แ แแ, แแแแ แแแก แฃแแ แแแแ แแแแแขแแแ แแแ แแ แกแแฎแแแแก แแแ แฉแแแ แแ แแแฃแจแแแแแก. แแกแ แแแแแฌแงแ แงแฃแ แแแ, แ แแแแ แจแแแแฅแแแ แแแ แแแแ แแ แแ แ.แจ. แแ แแแแฎแแแ, แ แแ แ แแฆแแช แกแแกแฃแแแแแก แแแแแแแแแ. แจแแแแแแ, แแแ แแแแแแคแฃแ แแฎแ แแ แแแแ แแขแแ แแ แแแแฌแงแ แแแฆแแแ แแแแแ Speedtest API-แแก แแแแแงแแแแแแ.
แแแแ แแ แฃแคแ แ แแแแแแ แแฅแแแแแแ, แแฃ แแแแแแก แฌแแแแแ แแฅแแแแ AT แแ แซแแแแแแแแก แกแแจแฃแแแแแแ. แจแแกแแซแแแแแแ แแฅแแแแแแ แแแกแ แฎแแแแฎแแ แแแแคแแแฃแ แแชแแ, ppp แแแแจแแ แแก แจแแฅแแแ, IP-แแก แแแแแญแแแ, แขแแแแแแแแก แแแแ แแขแแ แแก แแแฆแแแ แแ แ.แจ. แแแแ แแ แกแแแฌแฃแฎแแ แแ, แแ แแแฃแจแแแ แแแแ, แ แแช แแแแชแแก.
GPS
GPS แแแแฆแแแก, แ แแแแแแช แแ แแแแชแแก, แฐแฅแแแแ UART แแแขแแ แคแแแกแ แแ แกแแแซแแแแ แ. แแก แแ แแงแ แกแแฃแแแแแกแ แแแแแกแแแแแ, แแแแ แแ แแแแแช แแแแแกแแแแแ แแ แแแ แขแแแ แแงแ. แแแแฆแแแ แแกแ แแแแแแงแฃแ แแแแแ.
แแแ แแแแ แแแแฎแ แแ, แแแ แแแแแ แแแฃแจแแแแแ GPS แแแแฆแแแแแ, แแแแ แแ แ แแแแ แช แแแแแแ, แฉแแแแแแแก แงแแแแแคแแ แ แแแแ แฎแแแก แฌแแ แแงแ แแแคแแฅแ แแแฃแแ. แแแแขแแ แฉแแแ แฃแแ แแแแ แแแงแแแแแ แแแ แแแแแฌแงแแแขแแแแแแแก.
แแแ แแแ แ แแแจแ, แแ แแแแฅแขแแฃแ แแ uart_AO_B (UART_RX_AO_B, UART_TX_AO_B) GPS-แแก แแแกแแแแแจแแ แแแแแ.
khadas@Khadas:~$ sudo fdtput -t s /dtb.img /serial@c81004e0 status okay
แแแแก แจแแแแแ แแแแแฌแแแ แแแแ แแชแแแก แฌแแ แแแขแแแแก.
khadas@Khadas:~$ fdtget /dtb.img /serial@c81004e0 status
okay
แแก แแ แซแแแแแ แแจแแแ แแ แแ แแแแฅแขแแ แแแก devtree-แก, แ แแช แซแแแแแ แแแกแแฎแแ แฎแแแแแแ.
แแ แแแแ แแชแแแก แฌแแ แแแขแแแแก แจแแแแแ, แแแแแขแแแ แแแ แแ แแแแแแกแขแแแแ แแ GPS แแแแแแ.
khadas@Khadas:~$ sudo reboot
GPS แแแแแแแก แแแงแแแแแ. แงแแแแแคแแ แก แแแงแแแแ แแ แแแจแแแแ แแฌแงแแแข แจแแแแแแแ แแแแคแแแฃแ แแชแแแกแแแแก.
sudo apt install gpsd gpsd-clients -y
sudo killall gpsd
/* GPS daemon stop/disable */
sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket
แแแ แแแแขแ แแแแก แคแแแแแก แ แแแแฅแขแแ แแแ.
sudo vim /etc/default/gpsd
แแแงแแแแ UART-แก, แ แแแแแแแช GPS แแแแแแแแ.
DEVICES="/dev/ttyS4"
แจแแแแแ แฉแแแ แฉแแ แแแแ แงแแแแแคแแ แก แแ แแแฌแงแแแ.
/* GPS daemon enable/start */
sudo systemctl enable gpsd.socket
sudo systemctl start gpsd.socket
แแแแก แจแแแแแ แแฃแแ แแแแแ GPS-แก.
GPS แแแแแฃแแ แฉแแแก แฎแแแจแแ, UART แแแแแ แแแแก แแแแแฃแแแแ แฉแแแก แฉแแแ แแแแแแแก แฅแแแจ.
แแแแแแขแแแ แแแ แแ แแแแแฌแแแ GPS แแฃแจแแแแแก gpsmon แแ แแแ แแแแก แแแแแงแแแแแแ.
แแฅแแแ แแแ แฎแแแแแ แแแแแแแแแแ แแแก แแ แแแ แแแแก แกแฃแ แแแแ, แแแแ แแ แฎแแแแแ แแแแฃแแแแแชแแแก GPS แแแแฆแแแแแ แแ แแก แแแจแแแแก, แ แแ แงแแแแแคแแ แ แแแ แแแแแ.
แแแแแแจแ แแ แแชแแแ แแแแ แ แแแ แแแแขแ แแ แแแแแแแแ แแฃแจแแแแแกแแแแก, แแแแ แแ แแแแแแฌแงแแแขแ แแก, แ แแแแแแช แกแฌแแ แแ แแฃแจแแแแแ แแแแแ 3-แแแ.
แแแงแแแแ แกแแญแแ แ แแแแแแแแแแแก.
sudo -H pip3 install gps3
แแ แแซแแ แฌแแ แกแแแฃแจแแ แแแแก.
from gps3.agps3threaded import AGPS3mechanism
...
def getPositionData(agps_thread):
counter = 0;
while True:
longitude = agps_thread.data_stream.lon
latitude = agps_thread.data_stream.lat
if latitude != 'n/a' and longitude != 'n/a':
return '{}' .format(longitude), '{}' .format(latitude)
counter = counter + 1
print ("Wait gps counter = %d" % counter)
if counter == 10:
ErrorMessage("ะัะธะฑะบะฐ GPS ะฟัะธะตะผะฝะธะบะฐ!!!")
return "NA", "NA"
time.sleep(1.0)
...
f __name__ == '__main__':
...
#gps
agps_thread = AGPS3mechanism() # Instantiate AGPS3 Mechanisms
agps_thread.stream_data() # From localhost (), or other hosts, by example, (host='gps.ddns.net')
agps_thread.run_thread() # Throttle time to sleep after an empty lookup, default '()' 0.2 two tenths of a second
แแฃ แแญแแ แแแแ แแแแ แแแแแขแแแแก แแแฆแแแ, แแก แแแแแแแ แจแแแแแแ แแแ แแ:
longitude, latitude = getPositionData(agps_thread)
แแ 1-10 แฌแแแจแ แแ แแแแแฆแแ แแแแ แแแแแขแก แแ แแ แ. แแแแฎ, แแแแ แแแแแขแแแแก แแแแแแแแแก แแแ แแชแแแแแแ แแฅแแแแ. แแ แ แแแขแแแแแฃแ แ, แแแฎแ แแแ แแ แแแฎแ แแแ, แแแแ แแ แแฃแจแแแแก. แแ แแแแแแฌแงแแแขแ แแแแก แแแแแแแแ, แ แแแแแ GPS-แก แจแแแซแแแแ แฐแฅแแแแแก แชแฃแแ แแแฆแแแ แแ แงแแแแแแแแก แแ แแแแฆแแก แแแแแชแแแแแ. แแฃ แแแแแแแแแแ แแแแแชแแแแแแก แแแฆแแแแก, แแแจแแ แแฃ แแฃแจแแแแ แแแกแขแแแชแแฃแ แแแแฎแจแ, แแ แแแ แแแ แแแงแแแแแก แแ แแแแแแแก. แแแแขแแ แแแแแแฎแแ แชแแแแ แแก แแ แแแแแแแแขแฃแ แ แแแ แแแแขแ.
แแ แแแชแแแจแ, แแฃ แแแขแ แแ แ แแฅแแแแแแ, แจแแกแแซแแแแแแ แแฅแแแแแแ GPS-แแแ แแแแแชแแแแแแก แแแฆแแแ แฃแจแฃแแแแ UART-แแก แกแแจแฃแแแแแแ, แชแแแแ แแแแแจแ แแแแแแแแแแแ แแ แแแกแแแ แแฃแจแแแแ. แแแแ แแ แแ แ แกแแแ แแแ แแ แแงแ, แแฅแแแแ แแแแแแแแแแ แแแแก แกแแกแขแแแแ แแแฎแแแฏแ แแแแ. แแแแฎ, แแ แแ แแ แชแฎแแแแแ.
แกแแแแแแแก แแแแแ
LED-แแก แแแแแแจแแ แแแ แแแ แขแแแ แแ แ แแฃแแ แแงแ แแแแแ แแ แแก. แแแแแแ แ แกแแ แแฃแแ แแก แแ แแก, แ แแ แกแแกแขแแแแจแ แแ แกแแแฃแแ แแแแแก แแแแแ แ แแ แจแแแกแแแแแแแ แแแคแแแ แแ แกแแแฃแ แแแแแก แแแแแ แก แแ แแแแขแแ, แ แแ แแแแฃแแแแขแแชแแ แแฌแแ แแแ แแแ แชแฎแแแ แฎแแแแ. แแแแ แแชแแฃแแ แกแแกแขแแแแก แขแแฅแแแแแก แแแแแก แแแแ แแกแ แแ แแแแแก แแแแ แแก แจแแกแแแแ แแแแแ, แแฅแแแ แฃแแแ แจแแแกแ แฃแแแ แแ แซแแแแแ:
gpio readall
แกแแกแขแแแแจแ แแ แแแคแแแ แฅแแแซแแกแแแแแก แแแ แแกแแแแแแแชแแแก แชแฎแ แแแ แแแแแฉแแแแแ. แ แแก แจแแแแแแแช แแ แฃแแแ แจแแแแซแแแ แแแแ แแชแแฃแแ แแแแ แแแแแ OS-แจแ. แฉแแแก แจแแแแฎแแแแแจแ LED แฃแแแแจแแ แแแแ GPIOH_5.
GPIO แแแแก แแแแแแ แแแ แแแแแแแแแ แ แแแแแแ.
gpio -g mode 421 out
แแแแฌแแ แแฃแแก.
gpio -g write 421 0
แแ แแก แแแแฌแแ .
gpio -g write 421 1
แงแแแแแคแแ แ แแแแแแแแฃแแแ, "1"-แแก แแแฌแแ แแก แจแแแแแ
#gpio subsistem
def gpio_init():
os.system("gpio -g mode 421 out")
os.system("gpio -g write 421 1")
def gpio_set(val):
os.system("gpio -g write 421 %d" % val)
def error_blink():
gpio_set(0)
time.sleep(0.1)
gpio_set(1)
time.sleep(0.1)
gpio_set(0)
time.sleep(0.1)
gpio_set(1)
time.sleep(0.1)
gpio_set(0)
time.sleep(1.0)
gpio_set(1)
def good_blink():
gpio_set(1)
แแฎแแ แจแแชแแแแแก แจแแแแฎแแแแแจแ แแฃแ แแแแ error_blink()-แก แแ แจแฃแฅแแแจแแแ แแแแแแแ แแชแแแชแแแแแแ.
แแ แแแ แแแฃแแ แแแแแซแแแ
Speedtest API
แแแแ แกแแฎแแ แฃแแแ, แ แแ speedtest.net แกแแ แแแกแก แแฅแแก แกแแแฃแแแ แ python-API, แจแแแแซแแแแ แแแฎแแ
แแแ แแ แแก แแ แแก, แ แแ แแ แกแแแแแก แฌแงแแ แแก แแแแแแ, แ แแแแแแ แแแฎแแแช แจแแกแแซแแแแแแแ. แ แแแแ แแแแฃแจแแแ แแ API-แกแแแ (แแแ แขแแแ แแแแแแแแแแ) แจแแแแซแแแแ แแฎแแแแ แแฅ
แแ แแแแแแแกแขแแแแ แ แแแแแแแก แแแแแแแแแแ แจแแแแแแ แแ แซแแแแแแ.
sudo -H pip3 install speedtest-cli
แแแแแแแแแ, แแฅแแแ แจแแแแซแแแแ แแแแแแกแขแแแแ แแ แกแแฉแฅแแ แแก แขแแกแขแแ แ Ubuntu-แจแ แแแ แแแแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แกแแจแฃแแแแแแ. แแก แแ แแก แแแแแ แแแแแแแก แแแแแแแชแแ, แ แแแแแก แแแจแแแแ แจแแกแแซแแแแแแแ แแแ แแแแแ แแแแกแแแแแแ.
sudo apt install speedtest-cli -y
แแ แแแแแแแ แแฅแแแแ แแแขแแ แแแขแแก แกแแฉแฅแแ แ.
speedtest-cli
Retrieving speedtest.net configuration...
Testing from B***** (*.*.*.*)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by MTS (Moscow) [0.12 km]: 11.8 ms
Testing download speed................................................................................
Download: 7.10 Mbit/s
Testing upload speed......................................................................................................
Upload: 3.86 Mbit/s
แจแแแแแแ, แแกแแแ แ แแแแ แช แแ. แแ แแแแแฌแแ แแ แกแแฉแฅแแ แแก แขแแกแขแแก แกแแฌแงแแก แแแแแแจแ แจแแกแแแ, แ แแแ แฃแคแ แ แกแ แฃแแแ แแแแแแฎแแ แชแแแแแแแแ แแกแแแ แฉแแแก แแ แแแฅแขแจแ. แแ แ-แแ แแ แงแแแแแแ แแแแจแแแแแแแแแ แแแแชแแแแ แขแแแแแแแแก แแแแ แแขแแ แแก แกแแฎแแแแก แแแแแแแแ, แ แแแ แฉแแแแแชแแแแก แแแ แคแแ แคแแขแแจแ.
import speedtest
from datetime import datetime
...
#ะฃะบะฐะทัะฒะฐะตะผ ะบะพะฝะบัะตัะฝัะน ัะตัะฒะตั ะดะปั ัะตััะฐ
#6053) MaximaTelecom (Moscow, Russian Federation)
servers = ["6053"]
# If you want to use a single threaded test
threads = None
s = speedtest.Speedtest()
#ะฟะพะปััะฐะตะผ ะธะผั ะพะฟะตัะฐัะพัะฐ ัะพัะพะฒะพะน ัะฒัะทะธ
opos = '%(isp)s' % s.config['client']
s.get_servers(servers)
#ะฟะพะปััะฐะตะผ ัะตะบััะพะฒัั ัััะพะบั ั ะฟะฐัะฐะผะตััะฐะผะธ ัะตัะฒะตัะฐ
testserver = '%(sponsor)s (%(name)s) [%(d)0.2f km]: %(latency)s ms' % s.results.server
#ัะตัั ะทะฐะณััะทะบะธ
s.download(threads=threads)
#ัะตัั ะฒัะณััะทะบะธ
s.upload(threads=threads)
#ะฟะพะปััะฐะตะผ ัะตะทัะปััะฐัั
s.results.share()
#ะะพัะปะต ัะตะณะพ ัะพัะผะธััะตััั ัััะพะบะฐ ะดะปั ะทะฐะฟะธัะธ ะฒ csv-ัะฐะนะป.
#ะฟะพะปััะฐะตะผ ะฟะพะทะธัะธั GPS
longitude, latitude = getPositionData(agps_thread)
#ะฒัะตะผั ะธ ะดะฐัะฐ
curdata = datetime.now().strftime('%d.%m.%Y')
curtime = datetime.now().strftime('%H:%M:%S')
delimiter = ';'
result_string = opos + delimiter + str(curpos) + delimiter +
curdata + delimiter + curtime + delimiter + longitude + ', ' + latitude + delimiter +
str(s.results.download/1000.0/1000.0) + delimiter + str(s.results.upload / 1000.0 / 1000.0) +
delimiter + str(s.results.ping) + delimiter + testserver + "n"
#ััั ะธะดะตั ะทะฐะฟะธัั ะฒ ัะฐะนะป ะปะพะณะพะฒ
แแฅแแช แงแแแแแคแแ แ แแ แช แแกแ แแแ แขแแแ แแฆแแแฉแแแ, แแฃแแชแ แแแชแแแแแแ แแแ แขแแแ แฉแแแแ. แแแแแแแแ แแแแแ แกแแ แแแ แแแแก แแแ แแแแขแ แ แขแแแ แแงแ []แแแแแแแ, แแแ แฉแแ แกแแฃแแแแแกแ แกแแ แแแ แ. แจแแแแแแ, แแ แแฅแแแแ แจแแแแฎแแแแแแ แกแแ แแแ แแแ แแ, แ แแแแ แช แแฅแแแ แแแแแ แแแฎแแแแ, แชแแแแแ แกแแฉแฅแแ แ. แแก แกแแแแแแ แ แแฃแแ แแแแแ, แคแแฅแกแแ แแแฃแแ แกแแ แแแ แแก แแแแแงแแแแแ, แแฃ แแกแแ, แกแขแแขแแแฃแ แ แแฃ แแแแแแแฃแ แ, แแแแแฎแแแก แแแแแแแก. แแแแ แแ แแฅ แแ แแก แแแแแแแแก แแแแ แแขแแ แแก แกแแฉแฅแแ แแก แแแแแแแแก แแ แแคแแแแแแก แแแแแแแแ, แ แแแแกแแช แแแแแแแฃแ แแ แแ แฉแแแก แกแแขแแกแขแ แกแแ แแแ แก แแ แกแขแแขแแแฃแ แแ แแแคแแฅแกแแ แแแฃแแก.
แแแแแแแฃแ แ แกแแ แแแ แแก แแ แฉแแแแกแแก แกแแฉแฅแแ แแก แแแแแแแแก แจแแแแแ.
แกแแฉแฅแแ แแก แขแแกแขแแ แแแแก แจแแแแแ, แแ แแ แแแแชแ แแ แจแแ แฉแแฃแแ แแ แแ แกแแ แแแ แแ.
แขแแกแขแแ แแแแก แแ แแก แแ แแแ แแแแแแแก แแ แแก โแแแฌแแโ แแ แกแแญแแ แแ แแแกแ แแแชแแแแแ แแแแแแแขแแแฃแ แ แแแแแแแแแ. แแแแ แแ แคแแฅแกแแ แแแฃแแ แกแแ แแแ แแ แแก แแแแแ แแแแแแแแ แแ แแแแแแขแฃแแ แฃแคแ แ แกแขแแแแแฃแ แแ.
แแแแแแแ, แแก แแ แแก แแแแ แแแแแแแก แแแแแแ. แแ แแ แแแแแแแแแแ แฉแแแ แกแแ แแแ แแก แกแแฉแฅแแ แแก iperf แฃแขแแแแขแแก แแแแแงแแแแแแ. แแแแ แแ แฉแแแ แแแชแแแ แขแแฅแแแแฃแ แแแฎแแกแแแแแแแแแก.
แคแแกแขแแก แแแแแแแแ แแ แจแแชแแแแแแ
แคแแกแขแแก แแแกแแแแแแแแ, แแ แแชแแแ แ แแแแแแแแ แแแแฃแแ แกแฎแแแแแกแฎแแ แแแ แแแแขแ, แแแแ แแ แกแแแแแแแ แแแแ แฉแ แจแแแแแแแ. แแ แแแแ แแแแกแขแ แแ แ แกแแคแแกแขแ แงแฃแแ Yandex-แแ แแ แจแแแแแ แแแแฆแ
แแฃแ แแแแแแ แแแแแแแแแ แแ แแคแแแแก แแแฎแแแแแ, แแฃ แแ แแก แแแแจแแ แ, แงแแแแ 6 แกแแแแจแ: 00 แกแแแแแ, 06 แกแแแแแ, 12 แกแแแแแ แแ 18 แกแแแแแ. แแแแแแแแ แจแแแแแแแแแ แแ.
from send_email import *
...
message_log = "ะะพะณะธ ัะตััะธัะพะฒะฐะฝะธั ะฟะปะฐัั โ1"
EmailForSend = ["[email protected]", "[email protected]"]
files = ["/home/khadas/modems_speedtest/csv"]
...
def sendLogs():
global EmailForSend
curdata = datetime.now().strftime('%d.%m.%Y')
ัurtime = datetime.now().strftime('%H:%M:%S')
try:
for addr_to in EmailForSend:
send_email(addr_to, message_log, "ะะพะณะธ ะทะฐ " + curdata + " " + ัurtime, files)
except:
print("Network problem for send mail")
return False
return True
แแแแแแแแแ แแงแ แจแแชแแแแแแแช. แแแกแแฌแงแแกแแกแแแแก, แแกแแแ แแแแ แแแแ แกแแแจแ แแ แจแแแแแ แแแแแแแแแก แแกแแแ แแ แแคแแแแก แแแแแงแแแแแแ, แแฃ แแแแจแแ แ แแงแ. แแฃแแชแ, แจแแแแแ แแ แแแแแแแแ แฌแแ แแแแจแแ แแแแ, แ แแ Yandex-แก แแฅแแก แจแแแฆแฃแแแ แแฆแแจแ แแแแแแแแแแ แจแแขแงแแแแแแแแแแก แ แแแแแแแแแแ (แแก แแ แแก แขแแแแแแ, แกแแแแ แแ แแแแชแแ แแแ). แแแแก แแแแ, แ แแ แจแแแซแแแแ แจแแชแแแแแก แแแแ แ แแแแแแแแ แแงแแก แฌแฃแแจแแช แแ, แฉแแแ แแแแแแฌแแ แฃแแ แ แแฅแแแ แจแแชแแแแแแแก แคแแกแขแแ แแแแแแแแแแ. แแกแ แ แแ, แแแแแแแแแกแฌแแแแ, แ แแแแกแแช แแแขแแแแขแฃแ แแ แแแแแแแแ แแแคแแ แแแชแแแก แแ แแ แแแแแแแก แจแแกแแฎแแ Yandex แกแแ แแแกแแแแก แกแแจแฃแแแแแแ.
แฃแแฃแแแแจแแ แแก แกแแ แแแ แ
แแแแกแแแแแก, แ แแ แแฅแแแแแ แฌแแแแแ แแแแ แแขแฃแ แแก แแแกแขแแแชแแฃแ แแแฌแแแแ แแ แจแแแแซแแ แแแกแ แแแ แแแแ แแ แแแแคแแแฃแ แแชแแ, แแญแแ แแแแแแ แแแ แ แกแแ แแแ แ. แแแแแแแ, แกแแแแ แแแแแแ แ แแ แแแงแแ, แกแฌแแ แ แแฅแแแแ แงแแแแ แแแแแชแแแแก แกแแ แแแ แแ แแแแแแแแ แแ แงแแแแ แแแแแแ แแ แแคแแแแก แแจแแแแแ แแแ แแแขแแ แคแแแกแจแ. แแแแ แแ แแ แ แแ แแแ แแฃแแแ.
VPS-แกแแแแก แแ แแแแ แฉแแ
แ แแแแ แช แแแแ แแขแฃแ แแกแแแ แแแแฃแแแแแชแแแก แแแแแแ, vim2-แแ แแแ แฉแแ แกแแแแ แแกแแแ แ ssh แแแแจแแ แ แแ, แ แแแแ แช แแ แแฅแขแแแแ แแฉแแแแ, แแก แแ แแ แแก แกแแฃแแแแแกแ. แแฃ แแแแจแแ แ แแแแแแ แแแแ, แกแแ แแแ แ แแแแฎแแแก แแแ แขแก แแ แแแกแ แกแแจแฃแแแแแแ แแแแแแจแแ แแแ แแแ แแแแฃแแ แแ แแแก แแแแแแแแแแแจแ แจแแฃแซแแแแแแแ. แแแแขแแ, แแแแแช แฃแแแแแกแแ แแแแฃแแแแแชแแแก แกแฎแแ แแแแแแแแแก แแแแแงแแแแแ, แแแแแแแแแ VPN. แแแแแแแแจแ แแแแแแแ VPN-แแ แแแแแกแแแ, แแแแ แแ แแ แ แแ แแฅแแแแ.
แแ แแ แจแแแฃแแแแแ แแแขแแแแแก Firewall-แแก แแแงแแแแแแก, แฃแคแแแแแแแก แจแแแฆแฃแแแแก, root ssh แแแแจแแ แแแแก แแแแแ แแแแกแ แแ VPS-แแก แแแงแแแแแแก แกแฎแแ แญแแจแแแ แแขแแแแก แจแแกแแฎแแ. แแแแแ แแแแแฏแแ แ, แ แแ แจแแ แฃแแแ แงแแแแแคแแ แ แแชแ. แแแกแขแแแชแแฃแ แ แแแแจแแ แแกแแแแก แแ แแฅแแแ แแฎแแ แแแแฎแแแ แแแแแก แกแแ แแแ แแ.
adduser vimssh
แแ แแฅแแแ ssh แแแแจแแ แแก แแแกแแฆแแแแแก แฉแแแแก แแแแ แแขแฃแ แแแ.
ssh-keygen
แแ แแแแแแแ แแ แแแ แฉแแแแก แกแแ แแแ แแ.
ssh-copy-id [email protected]
แฉแแแแก แแแแ แแขแฃแ แแแ แแ แแฅแแแ แแแขแแแแขแฃแ แกแแแแ แแกแแแ แ ssh แแแแจแแ แก แงแแแแ แฉแแขแแแ แแแแกแแก.
[Unit]
Description=Auto Reverse SSH
Requires=systemd-networkd-wait-online.service
After=systemd-networkd-wait-online.service
[Service]
User=khadas
ExecStart=/usr/bin/ssh -NT -o ExitOnForwardFailure=yes -o ServerAliveInterval=60 -CD 8080 -R 8083:localhost:22 [email protected]
RestartSec=5
Restart=always
[Install]
WantedBy=multi-user.target
แงแฃแ แแแฆแแแ แแแแฅแชแแแ แแแ แขแก 8083: แแก แแแแกแแแฆแแ แแแก แ แแแแ แแแ แขแก แแแแแแแงแแแแ แกแแแแ แแกแแแ แ ssh-แแก แกแแจแฃแแแแแแ แแแกแแแแแจแแ แแแแแ. แแแแแแขแแ แแก แแแจแแแแแจแ แแ แแแแฌแงแแ.
sudo systemctl enable autossh.service
sudo systemctl start autossh.service
แกแขแแขแฃแกแแก แแแฎแแแช แแ แจแแแแซแแแแ:
sudo systemctl status autossh.service
แแฎแแ, แฉแแแแก VPS แกแแ แแแ แแ, แแฃ แแแแฃแจแแแ:
ssh -p 8083 khadas@localhost
แจแแแแแ แแแแแแแแ แขแแฅแแแแแก แกแแขแแกแขแ แแแฌแแแแ. แแ แขแแฅแแแแแแแ แแกแแแ แจแแแแซแแแ แแแแแแ แแ แแแแแกแแแแ แ แแแแแชแแแ ssh-แแก แกแแจแฃแแแแแแ แฉแแแก แกแแ แแแ แแ แแแแแแแแแแ, แ แแช แซแแแแแ แแแกแแฎแแ แฎแแแแแแ.
แแงแแแแแก แงแแแแ แแ แแแ
แฉแแ แแแแ, แแแแแฌแงแแ แแแแแแแแ แแแ แแ แแแแแ แแแ
แคแฃ, แแแ แแ, แแก แแ แแก แแก, แแ แแฆแแฌแแ แ แงแแแแ แแแแแซแ. แแฎแแ แแ แแ แแก แงแแแแแคแแ แ แแ แแแ แแแแแแ แแแแแแ. แแฅแแแ แจแแแแซแแแแ แแแฎแแ แแแแ
แแแแจแแแแแแแแแ แฌแแ แขแแแ แแแแแแ แแแแแแจแแ แแแแ: แแก แแ แแแฅแขแ แจแแแซแแแแ แแกแ แแ แแแแฌแงแแก, แ แแแแแ แแก แแงแ แแแ แแแแฃแแ แแแแแ แแขแฃแแ แแแแชแแแแกแแแแก, แแแแแ แแขแฃแแ แแ แฅแแขแแฅแขแฃแ แแกแแแแก. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแ แแแซแแแ แกแแฌแงแแก แแแแก, แแแแแช แแแแฎแกแแแ แงแแแแแแ แซแแแ แคแแก แแแแแแแก แแฅ, แแแ แแแแแ แขแแฅแกแขแจแ, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แกแ แฃแแแแ แแแฃแแแแแ แแ.
แแแกแแฌแงแแกแจแ แแแแแแแ gps-แก, gpio-แก แแแแชแแแแแแแแแก แแ แแฎแกแแ แชแแแแ แแ แแคแแแแก แแแแแก.
#ะทะฐะฟััะบ ะฟะพัะพะบะฐ ะฟะปะฐะฝะธัะพะฒัะธะบะฐ
pShedulerThread = threading.Thread(target=ShedulerThread, args=(1,))
pShedulerThread.start()
แแ แแคแแแ แกแแแแแแ แแแ แขแแแแ: แแก แฎแแแแแก, แแแแแ แแฃ แแ แ แจแแขแงแแแแแแแแแแก แแแแแแแแแก แแ แ แแ แ แ แแ แแก แแแแแแแแแแแ แจแแชแแแแแก แกแขแแขแฃแกแ. แแฃ แแ แกแแแแแก แจแแชแแแแแก แแ แแจแ, แแแจแแ แฉแแแ แแแชแแแแแ LED-แก.
#sheduler
def ShedulerThread(name):
global ready_to_send
while True:
d = datetime.today()
time_x = d.strftime('%H:%M')
if time_x in time_send_csv:
ready_to_send = True
if error_status:
error_blink()
else:
good_blink()
time.sleep(1)
แแ แแ แแแฅแขแแก แงแแแแแแ แ แแฃแแ แแแฌแแแแ แกแแแแ แแกแแแ แ ssh แแแแจแแ แแก แจแแแแ แฉแฃแแแแ แแแแแแฃแแ แขแแกแขแแกแแแแก. แแแแแแฃแแ แขแแกแขแ แแแแชแแแก แแแแฃแแแกแฎแแแแ แแแ แแแญแแก แแ DNS แกแแ แแแ แแก แฎแแแแฎแแ แแแแคแแแฃแ แแชแแแก. แ แแแแแแแช แแ แแแแ แแแแฎแฃแแแแก, แแชแแแแ, แ แแ แแแขแแ แแแแแ แฎแแก แ แแแกแแแแ แแ แแแแแก. แแแแช แกแแแฆแแแแแ แแแแ แชแฎแก แแแแแแก, แขแแแแแแฃแแก แแฆแแแก.
แแแแกแแแแแก แแ แแฅแแแ แชแแแแ แแแ แจแ แฃแขแแแแชแแแก แชแฎแ แแแก -set-mark 0x2 แแ แขแ แแคแแแแก แแแแแแแกแแแแ แแแแแก แฌแแกแก.
def InitRouteForSSH():
cmd_run("sudo iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 22 -j MARK --set-mark 0x2")
cmd_run("sudo ip rule add fwmark 0x2/0x2 lookup 102")
แจแแแแซแแแแ แแแแแแ แแแขแ แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แแฃแจแแแแก
แ แแก แจแแแแแแแช แแแแแแแแแแ แแแฃแแแแแแแ แชแแแแจแ, แกแแแแช แงแแแแ แฏแแ แแ แแแฆแแแ แแแแแแจแแ แแแฃแแ แแแแแแแแแก แกแแแก (แแแแกแแแแแก, แ แแ แแแแแ แแแแแ, แแแฃแแแแแแแแ แจแแแชแแแแ แแฃ แแ แ แฅแกแแแแก แแแแคแแแฃแ แแชแแ).
network_list = getNetworklist()
แฅแกแแแฃแ แ แแแขแแ แคแแแกแแแแก แกแแแก แแแฆแแแ แกแแแแแแ แแแ แขแแแแ.
def getNetworklist():
full_networklist = os.listdir('/sys/class/net/')
network_list = [x for x in full_networklist if "eth" in x and x != "eth0"]
return network_list
แกแแแก แแแฆแแแแก แจแแแแแ, แแ แแแแแงแแแ IP แแแกแแแแ แแแแ แงแแแแ แแแขแแ แคแแแกแแ, แ แแแแ แช แกแฃแ แแแแ แแแฉแแแแ แแแแ แแแแแแแก แจแแกแแฎแแ.
SetIpAllNetwork(network_list)
def SetIpAllNetwork(network_list):
for iface in network_list:
lastip = "%d" % (3 + network_list.index(iface))
cmd_run ("sudo ifconfig " + iface + " 192.168.8." + lastip +" up")
แจแแแแแ แแ แฃแแ แแแแ แแแแแแแแ แแแแแแฃแ แแแขแแ แคแแแกแก แแแ แงแฃแแจแ. แแ แแ แแแแแแคแแแฃแ แแ แแ แแแแแแฃแ แแแขแแ แคแแแกแก.
for iface in network_list:
ConfigNetwork(iface)
def ConfigNetwork(iface):
#ัะฑัะฐััะฒะฐะตะผ ะฒัะต ะฝะฐัััะพะนะบะธ
cmd_run("sudo ip route flush all")
#ะะฐะทะฝะฐัะฐะตะผ ัะปัะท ะฟะพ ัะผะพะปัะฐะฝะธั
cmd_run("sudo route add default gw 192.168.8.1 " + iface)
#ะทะฐะดะฐะตะผ dns-ัะตัะฒะตั (ััะพ ะฝัะถะฝะพ ะดะปั ัะฐะฑะพัั speedtest)
cmd_run ("sudo bash -c 'echo nameserver 8.8.8.8 > /etc/resolv.conf'")
แแ แแแแแฌแแแ แแแขแแ แคแแแกแก แคแฃแแฅแชแแแแแ แแแแกแแแแก, แแฃ แฅแกแแแ แแ แแ แแก, แแแจแแ แแฅแแแ แจแแชแแแแแแก. แแฃ แแ แกแแแแแก แฅแกแแแ, แแแจแแ แแ แแ แแแแฅแแแแแ!
แแฅ แแ แแแแแแคแแแฃแ แแ แแ ssh แแแ แจแ แฃแขแแแแชแแแก แแ แแแขแแ แคแแแกแแ (แแฃ แแก แแ แแแแแแแแฃแแ), แแแแแแแแ แจแแชแแแแแแก แกแแ แแแ แแ, แแฃ แแ แ แแแแแแ, แแแแแแแแ แแฃแ แแแแแแก แแ แแแแแก แแแฌแแ แแแแ Speedtest-แก แแ แแแแแก แจแแแแฎแแแก csv แคแแแแจแ.
if not NetworkAvalible():
....
#ะะดะตัั ะผั ัะพัะผะธััะตะผ ะพัะธะฑะบะธ
....
else: #ะััั ัะตัั, ััะฐ, ัะฐะฑะพัะฐะตะผ!
#ะัะปะธ ั ะฝะฐั ะฟัะพะฑะปะตะผะฝัะน ะธะฝัะตััะตะนั, ะฝะฐ ะบะพัะพัะพะผ ssh, ัะพ ะผะตะฝัะตะผ ะตะณะพ
if (sshint == lastbanint or sshint =="free"):
print("********** Setup SSH ********************")
if sshint !="free":
ัmd_run("sudo ip route del default via 192.168.8.1 dev " + sshint +" table 102")
SetupReverseSSH(iface)
sshint = iface
#ัะฐะท ัะตัะบะฐ ัะฐะฑะพัะฐะตั, ัะพ ะดะฐะฒะฐะน ััะพัะฝะพ ะฒัะต ะพัะฟัะฐะฒะธะผ!!!
if ready_to_send:
print ("**** Ready to send!!!")
if sendLogs():
ready_to_send = False
if error_status:
SendErrors()
#ะธ ะดะฐะปะตะต ัะตััะธััะตะผ ัะบะพัะพััั ะธ ัะพั
ัะฐะฝัะตะผ ะปะพะณะธ.
แแฆแกแแแแจแแแแแ แกแแแแ แแกแแแ แ ssh-แแก แแแงแแแแแแก แคแฃแแฅแชแแ.
def SetupReverseSSH(iface):
cmd_run("sudo systemctl stop autossh.service")
cmd_run("sudo ip route add default via 192.168.8.1 dev " + iface +" table 102")
cmd_run("sudo systemctl start autossh.service")
แแ แ แ แแฅแแ แฃแแแ, แแฅแแแ แฃแแแ แแแแแแขแแ แแแแแ แแก แกแแแแแแแ แกแขแแ แขแแแก. แแแแกแแแแแก แแ แแฅแแแ แคแแแแก:
sudo vim /etc/systemd/system/modems_speedtest.service
แแ แแ แแแกแจแ แแฌแแ :
[Unit]
Description=Modem Speed Test
Requires=systemd-networkd-wait-online.service
After=systemd-networkd-wait-online.service
[Service]
User=khadas
ExecStart=/usr/bin/python3.6 /home/khadas/modems_speedtest/networks.py
RestartSec=5
Restart=always
[Install]
WantedBy=multi-user.target
แฉแแ แแแ แแแขแแแแขแฃแ แฉแแขแแแ แแแแก แแ แแแฌแงแแ!
sudo systemctl enable modems_speedtest.service
sudo systemctl start modems_speedtest.service
แแฎแแ แแ แจแแแแซแแแ แแแแฎแ แฉแแแแฌแแ แแแ, แแฃ แ แ แฎแแแแ แแ แซแแแแแแก แแแแแงแแแแแแ:
journalctl -u modems_speedtest.service --no-pager -f
แแแกแแแแแแ
แแแ แแ, แแฎแแ แงแแแแแแ แแแแจแแแแแแแแแ แแก แแ แแก, แ แ แแแฎแแ แแแแก แจแแแแแแ? แแฅ แแแชแแแฃแแแ แ แแแแแแแแ แแ แแคแแแ, แ แแแแแแ แแแแแฆแแแ แแแแแฎแแ แฎแ แแแแแแแแ แแแแกแ แแ แแแแแ แแแแก แแ แแชแแกแจแ. แแ แแคแแแแแ แแแแแฃแแแ gnuplot-แแก แแแแแงแแแแแแ แจแแแแแแ แกแแ แแแขแแ.
#! /usr/bin/gnuplot -persist
set terminal postscript eps enhanced color solid
set output "Rostelecom.ps"
#set terminal png size 1024, 768
#set output "Rostelecom.png"
set datafile separator ';'
set grid xtics ytics
set xdata time
set ylabel "Speed Mb/s"
set xlabel 'Time'
set timefmt '%d.%m.%Y;%H:%M:%S'
set title "Rostelecom Speed"
plot "Rostelecom.csv" using 3:6 with lines title "Download", '' using 3:7 with lines title "Upload"
set title "Rostelecom 2 Ping"
set ylabel "Ping ms"
plot "Rostelecom.csv" using 3:8 with lines title "Ping"
แแแ แแแแ แแแแแชแแแแแแ Tele2 แแแแ แแขแแ แแแ แแงแ, แ แแแแแกแแช แ แแแแแแแแ แแฆแ แแแขแแ แแแแ.
แแฅ แแแแแแแงแแแ แแแแแแแฃแ แ แกแแแแแ แกแแ แแแ แ. แกแแฉแฅแแ แแก แแแแแแแแแ แแฃแจแแแแก, แแแแ แแ แซแแแแแ แแแ แงแแแแก, แแแแ แแ แแแ แแแแฃแแ แกแแจแฃแแแ แแแแจแแแแแแแ แแแแแช แฉแแแก แแ แแแแก แแแฆแแแ แจแแกแแซแแแแแแแ แแแแแชแแแแแแก แแแคแแแขแแ แแ, แแแแแแแแแ, แแแซแ แแแ แกแแจแฃแแแแแ.
แแแแแแแแแแแ แแแแจแแแ แ แแแแแแแแ แแ แแคแแแ แกแฎแแ แขแแแแแแแแก แแแแ แแขแแ แแแแกแแแแก. แแ แจแแแแฎแแแแแจแ แฃแแแ แแ แกแแแแแแ แแ แแ แกแแขแแกแขแ แกแแ แแแ แ แแ แจแแแแแแแแช แซแแแแแ แกแแแแขแแ แแกแ แแงแ.
แ แแแแ แช แฎแแแแแ, แแแแ แซแแแแแ แแ แชแแแแ แแ แแแแแชแแแแแแก แแแแแแแกแ แแ แแแแฃแจแแแแแแกแแแแก แแ แแจแแแ แแ แแ แแ แซแแแแแแ แ แแแแแแแแ แแแแ แแก แแฃแจแแแแแกแแแแก. แแแแ แแโฆ
แแฃแจแแแแแก แจแแแแแ
แกแแแฃแจแแ แแแฃแแแแแแแแ แแแกแ แฃแแแ แฉแแแ แแแแขแ แแแแก แแแฆแแ แแ แกแแแฃแแ แแแ แแแแแแแแแก แแแแ. แแ แแ แแแฅแขแแก แแ แ-แแ แแ แกแฃแกแขแ แแฎแแ แ, แฉแแแ แกแฃแแแแฅแขแฃแ แ แแแ แแ, แแแแแแ แแงแ, แ แแแแแกแแช แกแฎแแ แแแแแแแแแแ แแ แแแ แแฃแแแ แแฃแจแแแแ แแแแแแแแแ แแ แกแฃแ แแ แแ แงแแแแแ แฉแแขแแแ แแแแกแแก แแแแแแแแ แแกแแ แฎแ แแแแแก. แแ แแแแแแแแกแแแแแก, แแ แกแแแแแก แฃแแแ แแแ แกแฎแแ แแแแแแแก แแแแแแแแ; แฉแแแฃแแแแ แแ, แแกแแแ แฃแแแ แแ แแแ Mini PCI-e แคแแ แแแขแจแ แแ แแแแแแขแแแแแฃแแแ แแแฌแงแแแแแแแแก แจแแแแแ แแ แแแแ แแ แฃแคแ แ แแแแแแแ แแแแคแแแฃแ แแชแแ. แแแแ แแ แแก แกแ แฃแแแแ แแแแกแฎแแแแแแฃแแ แแแแแแแ. แแ แแแฅแขแ แกแแแแขแแ แแกแ แแงแ แแ แซแแแแแ แแแแแฎแแ แแ, แ แแ แจแแแซแแแ แแแกแจแ แแแแแฌแแแแแแ.
แฌแงแแ แ: www.habr.com