Jak korzystać z potoków SSH w systemie Linux

Jak korzystać z potoków SSH w systemie Linux
Zdjęcie mężczyzny pracującego przed komputerem.

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.catmore

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”.

Terminal pokazujący podstawowe przekierowanie potoku UNIX na komputerze lokalnym.

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:

Terminal pokazujący indywidualny transfer plików przy użyciu potoku SSH w systemie Linux.

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:

Terminal pokazujący aktywny strumień audio za pomocą potoków SSH.

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.

Zrzut ekranu przedstawiający obraz wideo z aktywnej kamery internetowej przechodzący przez potok SSH w systemie Linux.

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:

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:

Terminal wyświetlający dowolny tekst w konsoli TTY komputera.

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.

Terminal pokazujący schowek lokalnej maszyny po potoku SSH.

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

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