Բովանդակություն:
- Քայլ 1: Ենթադրում եմ, որ դուք արդեն ունեք OpenWrt…
- Քայլ 2: Softwareրագրակազմ և գործիքներ
- Քայլ 3: Ստեղծեք նվազագույն ծրագիր
- Քայլ 4. Որոշ տեղեկությունների ավելացում. Հաճախորդների քանակ, WAN IP հասցե, Uptime
- Քայլ 5: WiFi վերահսկում `միացված/անջատված
- Քայլ 6: Համակարգային վիճակագրության գծապատկեր
- Քայլ 7: HDD- ի պտտման կարգավիճակը
- Քայլ 8. Networkանցի գործունեության գծապատկեր
- Քայլ 9: ificationsանուցումներ
- Քայլ 10: Ավտոմատ գործարկում ֆոնին
- Քայլ 11: Եզրակացություն և հետագա գաղափարներ
Video: Android/iOS հավելված ՝ ձեր OpenWrt երթուղիչին հեռակա մուտք գործելու համար ՝ 11 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Վերջերս ես գնեցի նոր երթուղիչ (Xiaomi Mi Router 3G): Եվ, իհարկե, այս նոր, սարսափելի ապարատը ոգեշնչեց ինձ սկսել աշխատել այս նախագծի վրա;)
Քայլ 1: Ենթադրում եմ, որ դուք արդեն ունեք OpenWrt…
Նախ պետք է տեղադրեի OpenWrt- ը… Հիմնականում հետևեցի այս ուղեցույցին (հատուկ այս երթուղիչի մոդելի համար). Openwrt տեղադրում, WiFi նշաձող, ընկերուհու ingրամեկուսացում: Վա Iյ, ես այնքան ծիծաղեցի::)
Ուշադրություն. OpenWrt- ի տեղադրումը կարող է աղյուսացնել ձեր երթուղիչը: Բայց ավարտելուց հետո այն բացում է ամբողջ հզորությունն ու վերահսկողությունը: Ես այնքան համարձակ չեմ, որ այստեղ որևէ ցուցում տամ, քանի որ դրանք կարող են տարբեր լինել յուրաքանչյուր երթուղիչի մոդելի համար:
Բայց եթե դուք արդեն ունեք OpenWrt ձեր երթուղղիչում, ապա կկարողանաք սկսել այս ձեռնարկը notime- ում:
BTW- ն, որոշ զարգացման տախտակներ գալիս են OpenWrt- ով, ինչպես օրինակ ՝ Onion Omega- ն, VoCore- ը, LinkIt Smart 7688- ը և այլն: Այս ձեռնարկը նաև բացատրում է նման ծրագրեր ստեղծելու մի քանի հիմնական գաղափարներ, այնպես որ կարող եք հեշտությամբ հարմարեցնել այն Raspberry Pi- ի և նմանատիպ ծրագրերի հետ աշխատելու համար:
Այս նախագծի համար ես հիմնականում կօգտագործեմ նախապես տեղադրված ծրագրակազմ (հասանելի է OpenWrt- ով միացված ցանկացած երթուղիչում): Բայց որոշ առաջադեմ ֆունկցիոնալության համար ես ստիպված էի տեղադրել լրացուցիչ փաթեթներ: Սա արվում է ընդամենը մի քանի կտտոցով, այնպես որ ես այստեղ կներառեմ հրահանգները:
Բացի այդ, ես ենթադրում եմ, որ դուք արդեն գիտեք.
- Ինչպես բացել/օգտագործել SSH տերմինալը ձեր OpenWrt երթուղիչին
- Ինչպես բեռնել/խմբագրել ֆայլեր ձեր երթուղղիչում (օգտագործել FileZilla կամ scp/sftp)
- Ինչպես աշխատել Linux վահանակի հետ
Քայլ 2: Softwareրագրակազմ և գործիքներ
Սմարթֆոնի կողմից ես օգտագործում եմ Blynk- ը: Այն տրամադրում է iOS և Android ծրագրեր ՝ վերահսկելու ցանկացած սարքավորում: Դուք կարող եք հեշտությամբ կառուցել գեղեցիկ գրաֆիկական ինտերֆեյսեր ձեր բոլոր նախագծերի համար ՝ պարզապես քաշելով և թողնելով վիջեթները ՝ անմիջապես ձեր սմարթֆոնի վրա: Blynk- ը հիմնականում օգտագործվում է Arduino- ի, Raspberry Pi- ի և այլնի հետ: Բայց ինչու՞ այն չաշխատել հենց երթուղղիչի վրա:;)
Սարքի կողմից ես Lua- ն կօգտագործեմ անհրաժեշտ ֆունկցիոնալությունը: Ես կարող եմ օգտագործել նաև Python կամ Node.js, բայց, ցավոք, այս տարբերակները միշտ չէ, որ հասանելի են, որոշ երթուղիչներում ռեսուրսների բացակայության պատճառով: Կամ C/C ++, բայց դրա հետ աշխատելը այնքան էլ հարմար չէ (յուրաքանչյուր փոփոխության համար վերակազմավորում և այլն): Մյուս կողմից, Lua- ն նախապես տեղադրված է, պարզ է օգտագործման և սովորելու համար: Այն օգտագործվում է որպես կանխադրված վեբ ինտերֆեյս ՝ LuCI:
Քայլ 3: Ստեղծեք նվազագույն ծրագիր
Blynk- ի և Lua- ի հետ սկսելն այնքան հեշտ է, որքան.
- Ներբեռնեք Blynk ծրագիրը (App Store- ից, Google Play)
- Ստեղծեք նոր նախագիծ և ստացեք Auth Token- ը
- Հետևեք Blynk Lua- ի տեղադրման հրահանգներին OpenWrt- ի համար:
Օգտագործեք SSH ՝ ձեր երթուղիչի վահանակ մուտք գործելու համար: Լռելյայն օրինակը գործարկելուց հետո.
լուա./ օրինակներ/հաճախորդ.լուա
Մենք պետք է տեսնենք այսպիսի բան.
Միացում…
SSL ձեռքսեղմում… Պատրաստ է:
Դա նշանակում է, որ ապահով, երկկողմանի կապը հավելվածի հետ հաստատված է: YAY!
Այժմ մենք կարող ենք հեշտությամբ ընդլայնել տրված օրինակը, այնպես որ այն հետաքրքիր բան է անում: Ես ստեղծել եմ այս օրինակի պատճենը `այն խմբագրելու համար.
cp./examples/client.lua./blynkmon.lua
Քայլ 4. Որոշ տեղեկությունների ավելացում. Հաճախորդների քանակ, WAN IP հասցե, Uptime
Հիմնական գաղափարն այն է, որ պարբերաբար ստանանք տեղեկատվություն ՕՀ -ից, անհրաժեշտության դեպքում մի քանի պարզ հաշվարկներ կատարենք, այնուհետև արդյունքը ուղարկենք Բլինք ՝ ցուցադրման:
Linux/OpenWrt- ում մենք ունենք համակարգի տվյալները ստանալու մի քանի եղանակ.
- Գործարկեք հրաման և վերլուծեք դրա տեքստը
- Գործարկեք հրաման և դիտեք այն վերադարձի ելքի կոդը
- Կարդացեք համակարգի ֆայլը, որը գտնվում է/proc/և/sys/class/դիրեկտորիաներում
Այժմ ես ուզում եմ ցուցադրել միացված սարքերի թիվը:
Երբ ես վարում եմ cat/proc/net/arp վահանակի վրա, այն դուրս է բերում հայտնի սարքերի ցանկը ՝ դրանց MAC և IP հասցեների հետ միասին.
IP հասցե HW տիպ Դրոշներ HW հասցե Դիմակ սարք
192.168.10.206 0x1 0x2 78: 02: f8: fb: d6: bf * br-lan 194.---------- 0x1 0x2 4c: 5e: 0c: 14: e0: 5c * eth0.2 192.168.10.162 0x1 0x0 04: b1: 67: 2f: e3: 74 * br-lan
Մենք կարող ենք ուղղակիորեն վերլուծել այն Lua- ում, բայց հաճախ ավելի հեշտ է օգտագործել մասնագիտացված կոմունալ ծառայությունները: Linux- ում դրանք grep, head, tail, cut, wc, awk են:
Arp արտադրանքից հաճախորդների թիվը ստանալու համար ես պետք է զտեմ աղյուսակը (հեռացնեմ անկապ տարրերը) և հաշվեմ աղյուսակի տողերը, որից ստացվում է հետևյալ հրամանը.
կատու/պրոկ/ցանց/արփ | գրեպ բր-լան | grep 0x2 | wc -l
Եկեք փորձենք.
root@router: ~/lua-blynk# cat/proc/net/arp | գրեպ բր-լան | grep 0x2 | wc -l
1
Հոյակապ Այժմ մենք ստանում ենք այն գաղափարը, թե ինչպես կարող ենք հավաքել բոլոր անհրաժեշտ տվյալները: Եկեք ավտոմատացնենք այն: Մեր կոդը մաքուր և ընդարձակելի դարձնելու համար եկեք ստեղծենք որոշ օգնական գործառույթներ.
գործառույթ exec_out (սմդ)
տեղական ֆայլ = io.popen (cmd), եթե ոչ ֆայլ, ապա վերադարձեք զրոյական տեղական ելք = ֆայլ. կարդալ ('*բոլորը') ֆայլը `փակել () print (" Run: "..cmd.." -> ".. output) վերադարձնել ելքային ավարտի գործառույթը read_file (path) տեղական ֆայլ = io.open (path, "rb"), եթե ոչ ֆայլ, ապա վերադարձնել զրոյական տեղական բովանդակություն = ֆայլ. կարդալ "*a" ֆայլը `close () print (" Read: "..path.." -> "..բովանդակություն) վերադարձնել բովանդակության ավարտը
Օգտագործելով այս կոմունալ ծառայությունները, մենք այժմ կարող ենք իրականացնել տվյալների հավաքման իրական գործառույթները.
getArpClients գործառույթը ()
վերադարձի թվաքանակ (exec_out ("cat/proc/net/arp | grep br -lan | grep 0x2 | wc -l")) վերջնական գործառույթ getUptime () վերադարձ տոննա (exec_out ("cat/proc/uptime | awk '{տպել $ 1 } '")) վերջնական գործառույթը getWanIP () վերադարձնել exec_out (" ifconfig eth0.2 | grep' inet addr: '| cut -d: -f2 | awk' {print $ 1} '") ավարտ
Դուք կարող եք գործարկել այս պատյանների հրահանգների մասերը ՝ ավելի խորը հասկանալու, թե ինչպես է այն աշխատում և հարմարեցնելու այն ձեր կարիքներին:
Ամենահեշտ մասը տվյալների ուղարկումն է Blynk հավելված: Լռելյայն օրինակը արդեն կարգավորում է ժամաչափը, որն ամեն 5 վայրկյանը մեկ գործարկում է ինչ -որ կոդ, այնպես որ մենք պարզապես նորից օգտագործում ենք այն.
տեղական tmr1 = erամաչափ. նոր {interval = 5000, func = գործառույթ ()
blynk: virtualWrite (10, getArpClients ()) blynk: virtualWrite (11, string.format ("%. 1f h", getUptime ()/60/60)) blynk: virtualWrite (12, getWanIP ()) վերջ}
Հավելվածում մենք ավելացնում ենք 3 պիտակի վիջեթ և համապատասխանաբար դրանք վերագրում ենք վիրտուալ կապում 10, 11, 12:
Թեև դա աշխատում է, այն բավականին անարդյունավետ է, քանի որ WAN IP- ը կամ հաճախորդների թիվը այդքան հաճախ չեն թարմացվում: Եկեք շտկենք դա:
WAN IP- ի համար մենք այն տեղափոխում ենք միացված կարգավորիչ: Այն գործարկվելու է ամեն անգամ, երբ երթուղիչը կապ է հաստատում Blynk Cloud- ի հետ: Սա պետք է բավարար լինի.
blynk: միացված («միացված», գործառույթ ()
տպել («Պատրաստ է») blynk: virtualWrite (12, getWanIP ()) վերջ)
Uptime- ի և հաճախորդների համարի համար մենք ստեղծում ենք առանձին ժամաչափ ՝ 5 րոպե տևողությամբ: ընդմիջում:
տեղական tmr2 = erամաչափ. նոր {interval = 5*60*1000, func = գործառույթ ()
blynk: virtualWrite (10, getArpClients ()) blynk: virtualWrite (11, string.format ("%. 1f h", getUptime ()/60/60)) վերջ}
Քայլ 5: WiFi վերահսկում `միացված/անջատված
Մինչ այժմ մենք միայն որոշ տեղեկություններ էինք ստանում սարքից: Փորձենք վերահսկել այն:
blynk: միացված («V20», գործառույթ (պարամետր)
եթե param [1] == "1" ապա os.execute ("wifi up") այլապես os.execute ("wifi down") վերջի վերջ)
Հավելվածի կողմից ես պարզապես ավելացրեցի «Կոճակ» վիջեթը (ռեժիմ ՝ անջատիչ) և այն հանձնարարեցի V20- ին:
Վերջ: Ingարմանալի է:
Քայլ 6: Համակարգային վիճակագրության գծապատկեր
գործառույթը getCpuLoad ()
վերադարձի թվաքանակ (exec_out ("top -bn1 | grep 'CPU:' | head -n1 | awk '{print $ 2+$ 4}'")) վերջնական գործառույթ getRamUsage () վերադարձ տոննա (exec_out ("free | grep Mem | awk ') {print ($ 3- $ 7)/$ 2 * 100.0} '")) վերջ
Մենք նաև պետք է տվյալները ուղարկենք Blynk (եկեք նորից օգտագործենք tmr1).
տեղական tmr1 = erամաչափ. նոր {interval = 5000, func = գործառույթ ()
blynk: virtualWrite (5, getCpuLoad ()) blynk: virtualWrite (6, getRamUsage ()) վերջ}
Հավելվածի կողքին ավելացրեք SuperChart վիջեթը: Ավելացրեք պրոցեսոր, RAM տվյալների հոսքեր և նշանակեք V5, V6:
Քայլ 7: HDD- ի պտտման կարգավիճակը
Իմ երթուղիչն ունի արտաքին HDD սկավառակ, որը միացված է որպես ցանցին կից պահեստավորման սարք: Բանն այն է, որ այս սկավառակը կազմաձևված է, որպեսզի այն սկսի պտտվել, երբ ինչ -որ մեկը մուտք է գործում դրան և դադարեցնել ժամանակի ընդմիջումից հետո:
Ակնհայտ է, որ լավ կլինի իմանալ, թե քանի անգամ է այն միանում ամբողջ օրվա ընթացքում: Այսպիսով, ես ավելացրեցի մեկ այլ տվյալների հոսք իմ Համակարգի գծապատկերում:
HDD սկավառակի կարգավիճակ ստանալը մի փոքր ավելի բարդ է, բայց ես գտա մի տարբերակ: Նախևառաջ, տեղադրեք խելացի գործիքներ SSH վահանակից.
opkg թարմացում
opkg տեղադրել smartmontools
Այնուհետև, մեր ծածկագրում մենք պետք է գործարկենք հատուկ հրաման և ստուգենք ելքի ծածկագիրը.
գործառույթը exec_ret (cmd)
տեղական ելք = os.execute (cmd) print ("Run:"..cmd.. " -> exit:".. exit) return exit end function getHddSpinning () if exec_ret ("smartctl --nocheck = standby -info /dev/sda>/dev/null ") == 0 ապա վերադարձնել 1 այլ վերադարձը 0 վերջի վերջը
Նշում. Իմ HDD- ն /dev /sda է
Քայլ 8. Networkանցի գործունեության գծապատկեր
Մենք ստեղծում ենք մեկ այլ SuperChart վիջեթ (նման է նախորդին), ավելացնում ենք TX և RX տվյալների հոսքեր և հանձնարարում V1- ին և V2- ին: Նշում. Ես ուզում եմ ցուցադրել WAN նավահանգստի վիճակագրություն, և իմ WAN պորտը eth0.2 է
Օգնականի գործառույթները.
գործառույթը getWanRxBytes ()
վերադարձնել թվաքանակը (կարդալ_ ֆայլը ("/sys/class/net/eth0.2/վիճակագրություն/rx_bytes")) վերջնական գործառույթը getWanTxBytes () վերադարձնել թվաքանակը (կարդալ_ ֆայլը ("/sys/class/net/eth0.2/վիճակագրություն/tx_bytes")) վերջ
Հաջորդը, մի քանի կոդ ավելացրեք նույն tmr1- ին: Սա ավելի բարդ է, քանի որ մեզ անհրաժեշտ է միայն հաշվարկել և ցուցադրել փոխանցված/ստացված բայթերի տարբերությունը.
տեղական prevTx, prevRx
local tmr1 = erամաչափ. նոր {interval = 5000, func = գործառույթ () local tx = getWanTxBytes () local rx = getWanRxBytes () եթե prevTx և prevTx ~ = tx ապա blynk: virtualWrite (1, tx - prevTx) ավարտվում է, եթե prevRx և prevRx ~ = rx ապա blynk: virtualWrite (2, rx - prevRx) վերջ prevTx = tx prevRx = rx blynk: virtualWrite (5, getCpuLoad ()) blynk: virtualWrite (6, getRamUsage ()) blynk: virtualWdS (7, ստանալ,)) վերջ}
Քայլ 9: ificationsանուցումներ
Ես նաև ցանկանում էի տեղեկացվել, երբ իմ երթուղիչը հոսանքազրկվի կամ միանա ինտերնետին: Դրա համար մեզ անհրաժեշտ է ծանուցման վիջեթ:
Վիջեթների կարգավորումներում միացրեք «անցանց ծանուցումը»: Կոդի կարիք չկա: Բայց մենք կարող ենք նաև մաքսային ծանուցումներ ուղարկել մեր ծածկագրից:
Քայլ 10: Ավտոմատ գործարկում ֆոնին
Առայժմ սցենարը պետք է ձեռքով կատարվի, բայց ես ուզում եմ այն ինքնաբերաբար գործարկել, երբ երթուղիչը միացված է:
Դա արվում է ՝ ծառայություն ստեղծելով: Ստեղծեք ֆայլ /etc/init.d/blynkmon:
#!/bin/sh /etc/rc.common
START = 99 STOP = pidfile = "/var/run/blynkmon.pid" start () {if [-f $ pidfile]; ապա արձագանքեք «blynkmon արդեն վազում է» ելք 0 fi cd /root /lua-blynk lua blynkmon.lua your-auth-token> /dev /null & echo $! > $ pidfile} stop () {if [! -f $ pidfile]; ապա արձագանքեց «blynkmon- ը չի աշխատում» ելք 0 fi kill -9 $ (cat $ pidfile) rm $ pidfile}
Նշում. Մի մոռացեք փոխարինել ձեր հեղինակած նշանը
Այնուհետև միացրեք blynkmon ծառայությունը.
ծառայություն blynkmon միացնել
Քայլ 11: Եզրակացություն և հետագա գաղափարներ
Դուք կարող եք սկանավորել այս QR- ը ՝ իմ Blynk Project- ի կլոնը ստանալու համար: Այն պահանջում է էներգիայի որոշ միավորներ (4600), քանի որ այն օգտագործում է բազմաթիվ վիդջեթներ:
Գտեք Լուայի ամբողջական կոդը այստեղ ՝
Առայժմ ամեն ինչ լավ է, բայց ահա որոշ գաղափարներ, որոնք ես կցանկանայի ավելացնել մոտ ապագայում:
- Ավելացնել Reboot հրաման: Կանխել դրա պատահական սեղմումը:
- Լինուքսի ցանկացած հրաման գործարկելու համար ավելացրեք տերմինալ վիջեթ:
-
Ավելացնել պրոցեսորի ջերմաստիճանի գծապատկեր:
UPD. Unfortunatelyավոք, OpenWrt- ին ներկայումս բացակայում են որոշ երթուղիչներ իմ երթուղիչի մոդելի համար: Բայց այն հասանելի է շատ այլ երթուղիչների համար
- Ավելացրեք ծանուցում, երբ որևէ սարք միանում/լքում է ցանցը: Մենք արդեն ունենք arp տեղեկատվություն, այժմ միայն ստուգեք MAC հասցեն:
Այս կերպ մենք կարող ենք վերահսկել և վերահսկել 3D տպիչներ, ռոբոտներ, սովորական համակարգիչ/նոթբուք, Arduino/ESP8266/ESP32/RaspberryPi իրեր, Smart Home սարքեր և գրեթե ամեն ինչ շուրջը: Տեղեկացրեք ինձ, եթե ունեք որևէ այլ հետաքրքիր գաղափար: Ի՞նչ եք կարծում այս ամենի մասին:
Խորհուրդ ենք տալիս:
Հեռակա մուտք դեպի Raspberry Pi: SSH, Dekstop և FTP ՝ 4 քայլ
Raspberry Pi: SSH, Dekstop & FTP. Առաջինը SSH- ն է, որը թույլ կտա հեռակա մուտք գործել տերմինալ: Երկրորդը ռեմո է
8 փոխանցումային կառավարում NodeMCU- ով և IR ընդունիչով ՝ օգտագործելով WiFi և IR հեռակա և Android հավելված. 5 քայլ (նկարներով)
8 փոխանցումային կառավարում NodeMCU- ով և IR ընդունիչով ՝ օգտագործելով WiFi և IR Հեռակա և Android հավելված. 8 ռելե անջատիչների կառավարում ՝ օգտագործելով nodemcu և ir ընդունիչ ՝ wifi և ir հեռակա և Android հավելվածների միջոցով: ԱՅՍՏԵ
Հեռակա SSH մուտք դեպի Raspberry Pi 2: 5 քայլ
Հեռակա SSH մուտք դեպի Raspberry Pi 2. Երբևէ ցանկացե՞լ եք տեղադրել Raspberry Pi " դաշտում " և դեռ կարող եք մուտք ունենալ դրան: Ահա մի պարզ միջոց ՝ SSH հեռավոր մուտք գործելու ձեր Raspberry Pi 2 (և այլ մոդելներ նույնպես): Թեև կան լուծումներ, որոնք ներառում են VPN կամ կազմաձևում են
Կոտրեք ՝ դիտելու հրահանգի բոլոր քայլերը ՝ առանց մուտք գործելու:
Կոտրեք դիտել Instructable- ի բոլոր քայլերը ՝ առանց մուտք գործելու. ցանկացած «հաքերային» ծրագրային ապահովում: Խնդրում ենք չնկատել, որ սա ընդամենը մի փոքր հնարք է
Մուտք Վերահսկեք սերվերը կամ ցանկացած այլ Windows համակարգիչ հեռակա կարգով. 6 քայլ
Մուտք Կառավարեք սերվերը կամ Windows- ի ցանկացած այլ համակարգիչ հեռակա կարգով. Ha4xor4life- ը հեշտությամբ հրահանգ տվեց, որը կոչվում է Ստուգեք ձեր անձնական ֆայլերի սերվերում: Լավ գաղափար է, բայց դրա համար անհրաժեշտ էր երկու մուտք ունեցող մոնիտոր