przystajnik

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, NFS, FTP, 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 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 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

Post navigation

Translate »