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.