Terminal pogryzł człowieka: woof

Przemieszczanie się plików pomiędzy komputerami w sieci lokalnej ma wieloletnią tradycję. Pomagają im (plikom) w tym przeróżne protokoły ([[SMB]], [[Network_File_System_(protokół)|NFS]], [[FTP]], [[Secure_copy|SSH/scp]]), dedykowane programy (Dukto), ale zwykle potrzeba chwili i naglącej potrzeby wymusza rozwiązania najprostsze i… tymczasowe. Co zatem pozwoli nam w trywialny sposób przesłać plik/katalog pomiędzy dwoma komputerami w tej sami sieci LAN? W odpowiedzi cała widownia artykułuje głośno – Woof! Woof!.

Woof to prosty programik służący udostępnianiu pojedynczego pliku bądź całego katalogu. Zgodnie z nazwą (Web Offer One File) działa on na zasadzie jeszcze prostszego serwera [[HTTP]], co pozwala pobrać plik ze wskazanego adresu [[Uniform_Resource_Locator|URL]] czy to przeglądarką, czy też np. narzędziem [[wget]] (a także za pomocą woof w wersji 20120531). Co więcej, woof potrafi serwować również całe katalogi które przesyłane są w postaci archiwum bz2/gzip/zip. Działa również transmisja w odwrotną stronę (upload), ale traci na tym terminalowa koszerności, gdyż wymagana jest do tego celu przeglądarka.

Jak to wszystko działa? Zasada użytkowania woof jest banalna – w opcji minimum podajemy jedynie nazwę pliku, który chcemy komuś udostępnić. Woof standardowo zaoferuje go na porcie 8080 pod adresem IP naszego komputera.

#$ woof test.txt
Now serving on http://13.13.13.13:8080/

Aby się dobrać do oferowanego pliku, na drugiej maszynie używamy czy to wget, czy to przeglądarki i podajemy zasugerowany URL.

#$ wget http://13.13.13.13:8080/test.txt

A jeśli chcemy przesłać cały katalog, czy też zmienić port lub adres IP na którym będzie on udostępniony, do akcji wkraczają parametry którymi można nakarmić woof:

#$ woof -h

    Usage: woof [-i <ip_addr>] [-p <port>] [-c <count>] [<file>]
           woof [-i <ip_addr>] [-p <port>] [-c <count>] [-z|-j|-Z|-u] <dir>
           woof [-i <ip_addr>] [-p <port>] [-c <count>] -s
           woof [-i <ip_addr>] [-p <port>] [-c <count>] -U
   
    Serves a single file <count> times via http on port <port> on IP
    address <ip_addr>.
    When no filename is specified, or set to '-', then stdin will be read.
    When a directory is specified, an tar archive gets served. By default
    it is gzip compressed. You can specify -z for gzip compression, 
    -j for bzip2 compression, -Z for ZIP compression or -u for no compression.
    You can configure your default compression method in the configuration 
    file described below.                                                                                                                                                               
                                                                                                                                                                                        
    When -s is specified instead of a filename, woof distributes itself.                                                                                                                
                                                                                                                                                                                        
    When -U is specified, woof provides an upload form and allows uploading files.                                                                                                      
                                                                                                                                                                                        
    defaults: count = 1, port = 8080                                                                                                                                                    
                                                                                                                                                                                        
    You can specify different defaults in two locations: /etc/woofrc                                                                                                                    
    and ~/.woofrc can be INI-style config files containing the default                                                                                                                  
    port and the default count. The file in the home directory takes                                                                                                                    
    precedence. The compression methods are "off", "gz", "bz2" or "zip".                                                                                                                
                                                                                                                                                                                        
    Sample file:

        [main]
        port = 8008
        count = 2
        ip = 127.0.0.1
        compressed = gz

Jak widać, przesyłanie katalogu w archiwum gzip to banalna sprawa:

#$ woof -z wazne_dokumenty

Do tego możemy dołożyć uruchomienie usługi na innym adresie IP i porcie, a także liczbę dozwolonych pobrań (domyślnie po pobraniu pliku woof kończy działalność):

#$ woof -i 127.0.0.1 -p 1234 -c 5 -z wazne_dokumenty

Autor przewidział również „autoreplikację” programu, dzięki czemu druga strona nie mająca zainstalowanego woofa może sobie go od nas pobrać – wystarczy uruchomić program z parametrem „-s”.

Oczekiwanie na plik/katalog uzyskiwane za pomocą parametru „-U” wyrywa się z ram terminala (no chyba, że ktoś użyje [[Lynx_(przeglądarka)|Lynx]] lub [[Links]]), bowiem plik prześlemy za pomocą formularza w przeglądarce WWW, do której wklejamy odpowiedni URL.

Nie jest to może wszystko eleganckie czy też zgodne z zasadami bezpieczeństwa (brak praw dostępu, haseł, szyfrowania, itp.), ale pamiętajmy do jakich celów został stworzony woof. A cele te są doraźne i ratunkowe w awaryjnych sytuacjach i na potrzeby niewielkiej grupy lokalnych komputerów.

Program znajdziemy w standardowych repozytoriach większości standardowych dystrybucji. Niestety, w Ubuntu, Mincie i Debianie program jest w starszej wersji nieobsługującej trybu klienckiego (czyli z możliwością pobrania pliku). Natomiast tryb ten obsługuje już woof który znajdziemy w repozytorium AUR popularnego Arch Linuksa lub Manjaro.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Post comment

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.