Jak korzystać z potoków SSH w systemie Linux
Potoki UNIX są monumentalnym krokiem w rozwoju systemów operacyjnych UNIX i podobnych do UNIX. Umożliwiało to użytkownikom wykonywanie złożonych zadań obliczeniowych poprzez łączenie danych wejściowych i wyjściowych podstawowych programów. Ten artykuł rozszerza tę kwestię, pokazując, jak używać potoku UNIX w systemie Linux w sieci z protokołem SSH.
Zrozumienie potoku Uniksa
Potoki w systemie Unix (i co za tym idzie, Linux) służą do łączenia programów w łańcuchy i zapewniania ich współpracy. Na przykład, używając cat
, możesz pokazać zawartość pliku, ale jeśli użyłeś potoku (|
), możesz połączyć < polecenie i=3> do polecenia , aby ułatwić czytanie pliku.cat
more
Podstawowa idea jest następująca: program1 fileX | program2
. Jednak nie ogranicza się to tylko do jednego pliku i dwóch programów. Rurociągi mogą być tak zaawansowane, jak potrzebujesz, z dowolną liczbą modyfikatorów.
Oto kilka sposobów dobrego wykorzystania potoku (|
) w sytuacjach SSH.
Automatycznie przesyłaj skompresowane katalogi
Jednym z najpowszechniejszych sposobów wykorzystania potoków UNIX jest przechowywanie danych wyjściowych programu w pliku gdzieś w systemie lokalnym. Na przykład uruchomienie echo "Hello, MakeTechEasier!"| tee Hello
spowoduje uruchomienie programu echo
, jednocześnie przechowując ciąg znaków „Hello, MakeTechEasier!” w pliku „Hello”.
To powiedziawszy, możesz wykorzystać ten pomysł do przeniesienia katalogów pomiędzy dwoma hostami z Linuksem. Aby to zrobić, przeczytaj folder, który chcesz wysłać, używając tar
, a następnie prześlij go do swojego demona SSH:
To polecenie spakuje twój folder do archiwum tar i wyśle go na standardowe wyjście polecenia. Następnie potok UNIX odczyta te dane i wyśle je do zdalnego hosta z systemem Linux za pomocą protokołu SSH.
Możesz także odwrócić to polecenie, aby pobrać pliki ze zdalnych hostów:
Przesyłanie i pobieranie plików ze zdalnych hostów
Możesz także używać potoków i SSH do wysyłania pojedynczych plików przez sieć. Działa to poprzez użycie cat
jako sposobu załadowania zawartości pliku i wysłania go przez SSH:
Zdalny host otrzyma strumień wyjściowy z lokalnego procesu cat i zrekonstruuje plik w niezmienionej postaci.
Aby pobrać plik ze zdalnego hosta, musisz odwrócić kolejność poleceń i podać ścieżkę do zdalnego pliku:
Zdalne tworzenie kopii zapasowych i przywracanie dysków
Podobnie jak w przypadku wysyłania plików i katalogów, możliwe jest zdalne tworzenie kopii zapasowych całych dysków w systemie Linux za pomocą potoku UNIX i SSH. Może to być przydatne, jeśli chcesz szybko tworzyć kopie zapasowe poza siedzibą firmy i nie masz w tej chwili wolnego dysku fizycznego.
Aby wykonać kopię zapasową całego dysku, uruchom dd
ze zmienną „if=” ustawioną na dysk, którego kopię zapasową chcesz utworzyć, a następnie potokuj ją do demona SSH:
Odwrócenie tego polecenia umożliwia także przywrócenie obrazu dysku ze zdalnej maszyny na dysk fizyczny:
Co więcej, ta składnia potoku SSH będzie działać również z dyskretnymi partycjami dysku. Na przykład, jeśli Twój system ma partycję /home w „/dev/sda4”, możesz uruchomić następującą komendę, aby utworzyć jej kopię zapasową:
Przekierowanie wejścia audio do komputera zdalnego
Jedną z zalet potoków SSH jest to, że umożliwiają interakcję ze zdalnymi maszynami, tak jakby były zasobem lokalnym. Obejmuje to możliwość korzystania z plików urządzenia, takich jak wejście audio systemu.
Aby to zrobić, uruchom zdalną podpowłokę ALSA przy użyciu SSH i wyślij jej dane wyjściowe do lokalnego demona ALSA:
Spowoduje to odsłuchanie domyślnego urządzenia wejściowego audio na zdalnym komputerze i odtworzenie tego, co słyszy w twoim systemie. To powiedziawszy, odwrócenie poleceń spowoduje wysłanie sygnału wejściowego audio komputera lokalnego do wyjścia audio zdalnego hosta:
Potok ALSA SSH będzie również działał, jeśli połączysz go z innymi narzędziami do odtwarzania dźwięku. Na przykład możesz wysłać wyjście arecord z potoku SSH do ffmpeg:
Przesyłanie strumieniowe wideo na żywo ze zdalnej kamery internetowej
Innym świetnym zastosowaniem potoków SSH w systemie Linux jest przesyłanie strumieniowe obrazu wideo na żywo z kamery internetowej. Podobnie jak w przypadku dźwięku, pozwala to na wykorzystanie urządzenia zdalnego hosta i renderowanie jego sygnału wyjściowego na komputerze lokalnym.
Aby przesyłać strumieniowo z kamery internetowej zdalnego hosta, uruchom SSH z podpowłoką ffmpeg, a następnie potokuj go do klienta odtwarzania wideo na komputerze lokalnym:
To polecenie spowoduje strumieniowe przesyłanie nieprzetworzonego sygnału wideo z pierwszej kamery internetowej na zdalnym komputerze.
Możliwe jest także nagranie materiału ze zdalnej kamery internetowej do osobnego pliku. Możesz to zrobić, wysyłając dane z potoku SSH do tee przed przekierowaniem ich do odtwarzacza wideo:
Drukowanie tekstu na konsoli zdalnej
Oprócz audio i wideo możesz także używać potoków SSH do wysyłania nieprzetworzonego tekstu na TTY zdalnego komputera. Jest to przydatne, jeśli chcesz wysyłać komunikaty o stanie do systemu bez graficznego interfejsu użytkownika.
Aby rozpocząć, utwórz potok FIFO na komputerze lokalnym:
Uruchom polecenie nasłuchiwania tail
za pomocą FIFO i wyślij jego dane wyjściowe do demona SSH:
Sprawdź, czy nowy potok FIFO działa w sieci, wysyłając dane tekstowe za pomocą polecenia echo:
Przesyłanie zdalnych danych do lokalnego schowka
Największą wadą schowka systemowego jest to, że działa on tylko na komputerze lokalnym. Jest to problem, jeśli pracujesz z wieloma komputerami i chcesz przesyłać dane bez tworzenia plików tymczasowych.
Jednym ze sposobów rozwiązania tego problemu jest utworzenie potoku SSH, który może odczytywać i wysyłać zdalny plik bezpośrednio do schowka systemu lokalnego:
To polecenie połączy się ze zdalną maszyną, uruchomi narzędzie cat, a następnie rozpocznie czytanie pliku „ramces.txt”. Po zakończeniu wyśle zdalne dane z powrotem na komputer lokalny i przekieruje je do schowka systemowego.
Możesz także wypchnąć bieżący schowek systemu jako plik na maszynę zdalną, używając następującego polecenia:
Nauka przesyłania danych przez sieć przy użyciu potoków UNIX i SSH to dopiero pierwszy krok w zrozumieniu, jak działają sieci komputerowe. Dowiedz się więcej o swojej sieci, śledząc dokąd trafiają Twoje pakiety za pomocą Traceroute.
Źródło zdjęcia: Michaił Fesenko za pośrednictwem Unsplash. Wszystkie zmiany i zrzuty ekranu wykonał Ramces Red.
Dodaj komentarz