Bardzo popularnym tematem ostatnio jest mo?liwo?? pracy komputera w danymi zawartymi w tzw. "chmurze". Urz?dzenia nie przechowuj? danych lokalnie, a pos?uguj? si? plikami zawartymi w ró?norodnych us?ugach znajduj?cych si? "gdzie? w sieci". Jest kilka zalet takiego przechowywania danych:
- dost?pno?? do nich z dowolnego miejsca na ziemi
- niezale?no?? od systemu operacyjnego czy okre?lonej platformy
- bezpiecze?stwo danych (przynajmniej je?eli chodzi o problem dost?pno?ci urz?dze? z danymi)
Oczywi?cie mo?na dane przechowywa? w starodawny sposób - np. zakupi?/uzyska? dost?p do publicznego konta ftp i tam sk?adowa? swoje dane. Ale niesie to kilka ogranicze? typu brak mo?liwo?ci pracy grupowej nad tym samym plikiem.
W routerach zwykle nie ma zbyt du?o dost?pnej pami?ci. Pami?ci flash jest niewiele, pami?? RAM jest ulotna i dane z niej znikaj? po restarcie urz?dzenia. Wi?kszo?? dost?pnych urz?dze? posiada obecnie z??cza USB, wi?c po do??czeniu no?nika jest mo?liwo?? przechowywania na nim danych. Jednak?e taki router nie zawsze ma przydzielony publiczny adres ip, wi?c czasami przeszkod? mo?e okaza? si? dost?p do nich samych.
Google od kliku lat oferuje dost?p do konta pocztowego i swoich programów on-line, zapewniaj?c du?? niezawodno?? w dost?pnie do tych danych. Mo?na pokusi? si? do umieszczanie danych w?a?nie na koncie Google i korzystanie z nich do w?asnych celów. Samo przechowywanie dowolnych plików nie jest dost?pne, ale mo?na przechowywa? dokumenty tekstowe, arkusze kalkulacyjne czy zdj?cia i udost?pnia? je w razie potrzeby.
Praktycznych zastosowa? wykorzystania takiego mechanizmu mo?na znale?? wiele - je?eli na routerze zbieramy dane, np wykresy przepustowo?ci ??czy czy bie??c? temperatur?, mo?ne jest wys?a? do dokumentu na koncie Google a tam zmodyfikowa? je on-line (np. tworz?c wykres z danych) i udost?pni? ?wiatu odpowiedni dokument. Zaleta takiego rozwi?zania jest tak?e fakt aktualizacji danych i wykresów na bie??co, natychmiast dodaniu nowych danych.
GoogleCL
Pakiet GoogleCL jest zestawem narz?dzi umo?liwiaj?cych dost?p do danych na koncie Google przy pomocy linii polece?. Obecnie obs?ugiwane s? nast?puj?ce us?ugi:
- Blogger
- Calendar
- Contacts
- Docs
- Finance
- Picasa
- Youtube
Mo?na wi?c przes?a? film do youtube, mo?na edytowa? istniej?cy dokument, doda? nowy kontakt od znajomych czy zaktualizowa? zdarzenie w kalendarzu. Aby skorzysta? z us?ug niezb?dne jest oczywi?cie posiadane konta w serwisie Google.
Instalacja
OpenWrt umo?liwia wykorzystanie pakietu GoogleCL, który jest napisany w Pythonie, do tworzenia i edycji istniej?cych plików. Niezb?dne jest zainstalowanie pakietu Python wraz z zale?no?ciami, wi?c mo?e okaza? si? niezb?dne zrobienia extroota zapewniaj?cego odpowiedni? przestrze? na pakiety (wymagane jest ok 25MB pami?ci do instalacji pakietów). Sam? instalacje wykonujemy instaluj?c pakiet googlecl oraz inne zale?no?ci
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install python python-openssl python-expat
root@OpenWrt:~# opkg install http://eko.one.pl/openwrt/googlecl_0.9.9-1cj_all.ipk
Pakiet ten to zestaw polece? umo?liwiaj?cych manipulacj? danymi na koncie Google. Aby wy?wietli? list? obs?ugiwanych polece? wystarczy wyda? polecenie
root@OpenWrt:~# google -h
lub
root@OpenWrt:~# google help
Konfiguracja
Przed pierwszym uruchomieniem nale?y jest wykona? uwierzytelnianie dost?pu do danych na koncie Google. Nie jest mo?liwe uzyskanie dost?pu do danych bez odpowiedniej autoryzacji w samej witrynie. Wykonuje si? to poprzez prób? wykonania dowolnego polecenia - zostanie wygenerowany odpowiedni token, który nale?y potwierdzi? w witrynie Google. Mo?na do tego celu wykorzysta? np. prób? wy?wietlenia listy dokumentów. Pierwsza sesja wymaga autoryzacji:
root@OpenWrt:~# google docs list
Did not find config / preferences file at /root/.googlecl/config
... making new one.
Please specify user: openrouter.info
Failed to launch web browser: could not locate runnable browser
Please log in and/or grant access via your browser at https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=4%2FJBNqs7GqEMV4r234rfwefqaIvwKx&hd=default then hit enter.
interfejs_wan,N/A
root@OpenWrt:~#
Po zapisaniu danych, nast?pne przebiegaj? ju? bezproblemowo:
root@OpenWrt:~# google docs list
interfejs_wan,N/A
root@OpenWrt:~#
Pora na wyja?nienie przebiegu uwierzytelniania:
root@OpenWrt:~# google docs list
Did not find config / preferences file at /root/.googlecl/config
... making new one.
Please specify user: openrouter.info
tu podajemy nazw? konta w Google. Oczywi?cie w?asn?, jak? b?dziemy u?ywa? w pó?niejszym czasie.
Failed to launch web browser: could not locate runnable browser
Please log in and/or grant access via your browser at https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=4%2FJBNqs7GqEMV4r234rfwefqaIvwKx&hd=default then hit enter.
W tym momencie zosta? wygenerowany token, który nale?y potwierdzi? w witrynie Google. Nale?y to zrobi? przed naci?ni?ciem Enter - wystarczy skopiowa? podany plik do przegl?darki. Wy?wietli si? informacja o próbie dost?pu do witryny przez zewn?trzny program:
Nale?y to potwierdzi?
I tym samym autoryzowa? po??czenie. Dane autoryzacyjne trzymane s? w katalogu /root/.googlecl.
Przyk?ad zastosowania
Lista mo?liwych polece? do wykonania jest do?? du?a. Jako przyk?ad zostanie zaprezentowane gromadzenie informacji o uptime routera w dokumencie tekstowym.
Tworzymy plik o nazwie plik_z_uptime.txt
root@OpenWrt:~# touch plik_z_uptime.txt
Wysy?amy go do Google
root@OpenWrt:~# google docs upload plik_z_uptime.txt
Loading plik_z_uptime.txt
Upload success! Direct link: https://docs.google.com/document/d/1ZCasdcasdcasY-7HiZzjechm4F8etH4vivIrJaAiENc/edit?hl=en
root@OpenWrt:~#
Sprawdzamy czy tam jest faktycznie - albo logujemy si? do konta przez przegl?dark?, albo wy?wietlamy list? dokumentów
root@OpenWrt:~# google docs list
plik_z_uptime,N/A
root@OpenWrt:~#
Dokument mo?na pobra?, wys?a? oraz edytowa? istniej?cy. Interesuje nas ta ostatnia opcja. W przypadku edycji wywo?ywany jest edytor, który jako parametr ma przekazany nazw? pliku tymczasowego zawieraj?cego zawarto?? pobranego pliku. Symulujemy wi?c taki edytor tworz?c w?asne polecenie dopisuj?ce do pliku nast?pne dane. Nale?y utworzy? plik /usr/bin/archiwum_uptime.sh o zawarto?ci:
#!/bin/sh
uptime >> $1
exit 0
Najpro?ciej mo?na to wykona? edytorem vi lub poleceniami:
root@OpenWrt:~# echo "#!/bin/sh" > /usr/bin/archiwum_uptime.sh
root@OpenWrt:~# echo "uptime >> \$1 " >> /usr/bin/archiwum_uptime.sh
root@OpenWrt:~# echo "exit 0" >> /usr/bin/archiwum_uptime.sh
Nale?y pami?ta? o nadaniu atrybutu wykonywalno?ci:
root@OpenWrt:~# chmod a+x /usr/bin/archiwum_uptime.sh
Sprawdzamy czy dzia?a:
root@OpenWrt:~# google docs edit -n plik_z_uptime --editor /usr/bin/archiwum_uptime.sh
root@OpenWrt:~#
Je?eli teraz otworzymy plik o nazwie plik_z_uptime w dokumentach Google zobaczymy wpisane dane. Co wi?cej, je?eli b?dzie ten dokument otworzony ca?y czas, to kolejna aktualizacja na bie??co wy?wietli te dane w przegl?darce.
W/w polecenie mo?e umie?ci? np. w cronie korzystaj?c z poradników o Cronie.
Zako?czenie
W ten oto sposób korzystamy z danych umieszczonych w "chmurze". Dost?pne s? one zawsze on-line, nie ma problemów z uzyskaniem do nich dost?pu. Podane rozwi?zanie zosta?o wykonane na Openwrt, ale jest uniwersalne i zadzia?a tak?e w normalnym linuksie czy innym firmware w którym mamy dost?p do Pythona.
Ciekawszym zastosowaniem mo?e by? np. udost?pniane danych o zbieranej temperaturze. Dane pomiarowe mo?na online wysy?a? do pliku arkusza kalkulacyjnego i wykonywa? online wykres temperatury z tych danych. Potem wystarczy ju? tylko udost?pni? taki arkusz wszystkim zainteresowanym.