Remote control
Jul 15, 2004
Šī ir viena no idejām, kas ātri rodas, ātri (un parasti nepilnīgi) realizējas un ātri aizmirstas. Pusstunda izpētes darbu, stunda realizācijai.
Problēma
Dienas lielāko daļu esmu prom no sava "mājas" datora, bet arī pusdienlaikā labprāt vēlētos zināt, ar ko tas nodarbojas.
Risinājumi?
Lai attālināti kontrolētu datoru, ir lietojami daudz un dažādi varianti, piemēram, lietojot VNC, slēdzoties klāt terminālim - ar telnet/ssh/PuTTY/whatever. Ja jāslēdzas pie Windows datora - var lietot kādu trojāni vai kādu speciāli rakstītu attālinātās administrēšanas programmu.
Iespēju it kā netrūkst, bet problēma slēpjas ugunssienās. Tās ir veselas divas un abus datorus-partnerus ierobežo katru no savas puses. Nav iespējams pieslēgties ne tieši, ne "atmuguriski". Droši vien, ka šādām situācijām ir kas īpašs un ļoti viltīgs jau izdomāts, bet es šovakar uzrakstīju un lielā priekā izmēģināju "sistēmu", kas nodrošina attālinātu komandlīnijas pieeju -
Tā kā abi datori (klients un serveris) redz uz āru, bet no ārpuses nav redzami, jāņem palīgā kādu trešo - starpnieku, kas atrodas ārpusē. Starpnieks saņems klienta sūtītos pieprasījumus, nodos tos tālāk serverim, saņems apstrādes rezultātus no servera un nodos tos atpakaļ klientam. Klients slēdzas pie starpnieka pēc vajadzības, bet serverim nākas slēgties pie servera ik pēc noteikta laika intervāla, jo viņš jau nevar zināt, kad klientam kaut ko savajadzēsies. Ja nesen ir bijis kāds pieprasījums, šis intervāls ir īss (1-2 sek.), savukārt, ja sen nekas nav bijis jādara - garāks (15 sek.). Tādējādi, klients sākumā aizsūta kādu pieprasījumu, lai serveri "pamodinātu" un pēc vidēji 7 sekundēm var sākt normāli strādāt.
Ko tad es īsti uztaisīju - vēl jau īsti neko rādāmu, viss kā vienmēr zaļš, bet lietot jau var.
Serveris
Tātad, servera pienākums ir ik pa laikam slēgties pie starpnieka, uzzināt, vai nav kas jādara, ja ir, izdarīt un atgriezt rezultātus. Komunikācijai tiek lietots HTTP protokols. Nekā sarežģīta - maza 40 rindiņu Python programmiņa to visu paveic. Tiesa, viņai vēl jākļūst krietni gudrākai, bet ir un strādā.
Starpnieks
Starpnieka pienākumi - saņemt klienta pieprasījumus un atgriezt apstrādes rezultātus, apstrādāt servera komandu pieprasījumus, apstrādāt servera atgrieztos rezultātus. Tā kā tiek lietots HTTP protokols, starpnieks atrodas ārpusē, klientam ir iecerēta tīmekļa saskarne - starpnieku būtu ļoti saprātīgi rakstīt PHP. Starpnieka skripts, ja neskaita HTML, arī aizņem tās pašas 40 rindiņas.
Klients
Klientam starpnieks nodrošina tīmekļa saskarni, un viss, kas klientam vajadzīgs - pārlūkprogramma.
Darbībā
Šādi šobrīd izskatās klienta saskarne:
Servera darbības protokola paraudziņš
fetching command .. processed. fetching command .. processed. fetching command .. processed. fetching command .. executing: df server response: ['ok'] processed. fetching command .. processed. fetching command .. executing: ls server response: ['ok'] processed.
Kopsavilkums
Man jau patīk. Uztaisīšu drusku labāku (nenokarināmāku) servera galu un drošāku komunikāciju (nebūtu gudri sūtīt atklātā tekstā "su; ...." komandas) un sākšu lietot. Ar minimālām izmaiņām var dabūt arī WAP saskarni - tātad vēl var drusku paciesties līdz Linux-enabled telefona pirkšanai.