Hoe SSH-pipes op Linux te gebruiken
UNIX-pipes zijn een monumentale stap in de ontwikkeling van UNIX en UNIX-achtige besturingssystemen. Het stelde gebruikers in staat complexe computertaken uit te voeren door de invoer en uitvoer van basisprogramma’s aan elkaar te koppelen. Dit artikel gaat daar verder op door je te laten zien hoe je een UNIX-pipe in Linux gebruikt via een netwerk met het SSH-protocol.
Inzicht in de Unix-pijplijn
Pipes op Unix (en bij uitbreiding Linux) worden gebruikt om programma’s aan elkaar te koppelen en ze te laten samenwerken. Als u bijvoorbeeld cat
gebruikt, kunt u de inhoud van een bestand weergeven, maar als u een pipe (|
) gebruikt, kunt u de aan elkaar koppelen a i=3> commando naar het commando om het bestand makkelijker leesbaar te maken.cat
more
Het basisidee hier is dit: program1 fileX | program2
. Het is echter niet alleen beperkt tot één bestand en twee programma’s. Piping kan zo geavanceerd worden als nodig is, met zoveel modifiers als je maar kunt bedenken.
Hier zijn enkele manieren om goed gebruik te maken van pipe (|
) in SSH-situaties.
Automatisch gecomprimeerde mappen overbrengen
Een van de meest gebruikelijke manieren om UNIX-pipes te gebruiken is het opslaan van de uitvoer van een programma in een bestand ergens op het lokale systeem. Als u bijvoorbeeld echo "Hello, MakeTechEasier!"| tee Hello
uitvoert, wordt het programma echo
uitgevoerd, terwijl ook de tekenreeks “Hallo, MakeTechEasier!” in het bestand ‘Hallo’.
Dat gezegd hebbende, kun je dit idee gebruiken om mappen over te zetten tussen twee Linux-hosts. Om dat te doen, leest u de map die u wilt verzenden met tar
en stuurt u die vervolgens door naar uw SSH-daemon:
Met deze opdracht wordt uw map gebundeld in een tar-archief en naar de standaarduitvoer van de opdracht gestuurd. De UNIX-pipe leest vervolgens die gegevens en stuurt deze met behulp van SSH naar uw externe Linux-host.
U kunt deze opdracht ook omkeren om uw bestanden van externe hosts te halen:
Bestanden van externe hosts pushen en ophalen
Je kunt ook pipelines en SSH gebruiken om individuele bestanden over het netwerk te verzenden. Dit werkt door cat
te gebruiken als een manier om de inhoud van een bestand te laden en dat via SSH te verzenden:
De externe host ontvangt de uitvoerstroom van het lokale cat-proces en reconstrueert het bestand zoals het is.
Om een bestand van een externe host op te halen, moet u de volgorde van de opdracht omkeren en het pad voor uw externe bestand opgeven:
Op afstand een back-up van schijven maken en deze herstellen
Net als bij het verzenden van bestanden en mappen, is het mogelijk om op afstand een back-up te maken van hele schijven in Linux met een UNIX-pipe en SSH. Dit kan handig zijn als u snelle externe back-ups wilt maken en momenteel geen reserve fysieke schijf hebt.
Om een volledige schijf te back-uppen, voert u dd
uit met de variabele “if=” ingesteld op de schijf waarvan u een back-up wilt maken, en pipet u dat vervolgens naar uw SSH-daemon:
Als u deze opdracht ongedaan maakt, kunt u ook een schijfkopie van een externe machine naar een fysieke schijf herstellen:
Verder zal deze SSH-pipe-syntaxis ook werken met discrete schijfpartities. Als uw systeem bijvoorbeeld een /home-partitie in “/dev/sda4” heeft, kunt u de volgende opdracht uitvoeren om er een back-up van te maken:
Audio-invoer omleiden naar een externe machine
Een van de voordelen van SSH-pipes is dat u hiermee kunt communiceren met machines op afstand alsof het een lokale bron is. Dit omvat de mogelijkheid om apparaatbestanden aan te boren, zoals de audio-invoer van een systeem.
Om dit te doen, voert u een externe ALSA-subshell uit met behulp van SSH en stuurt u de uitvoer ervan naar uw lokale ALSA-daemon:
Hiermee wordt naar het standaardaudio-invoerapparaat op de externe machine geluisterd en afgespeeld wat het op uw systeem hoort. Dat gezegd hebbende, zal het omdraaien van de opdrachten de audio-invoer van uw lokale machine naar de audio-uitvoer van uw externe host sturen:
De ALSA SSH-pijp werkt ook als je hem combineert met andere audioafspeeltools. U kunt bijvoorbeeld de arecord-uitvoer van een SSH-pipe naar ffmpeg sturen:
Live video streamen vanaf een externe webcam
Een ander geweldig gebruik van SSH-pipes in Linux is het streamen van live video-webcamfeeds. Net als bij audio kunt u hiermee profiteren van het apparaat van een externe host en de uitvoer ervan op uw lokale machine weergeven.
Om te streamen vanaf de webcam van een externe host, voert u SSH uit met een ffmpeg-subshell en pipet u deze vervolgens door naar een video-afspeelclient op uw lokale computer:
Met deze opdracht wordt de onbewerkte video-uitvoer van de eerste webcam op uw externe machine gestreamd.
Het is ook mogelijk om de beelden van uw externe webcam op te nemen in een apart bestand. U kunt dit doen door de gegevens van de SSH-pijp naar de tee te sturen voordat u deze doorstuurt naar uw videospeler:
Tekst afdrukken op een externe console
Naast audio en video kun je ook SSH-pipes gebruiken om onbewerkte tekst naar de TTY van een externe machine te verzenden. Dit is handig als u statusberichten naar een systeem zonder GUI wilt verzenden.
Maak om te beginnen een FIFO-pipe op uw lokale computer:
Voer een luisteropdracht tail
uit met uw FIFO en stuur de uitvoer ervan naar een SSH-daemon:
Test of uw nieuwe FIFO-pijp via het netwerk werkt door tekstgegevens te verzenden met behulp van de echo-opdracht:
Externe gegevens doorsturen naar een lokaal klembord
Het grootste nadeel van een systeemklembord is dat het alleen werkt met de lokale machine. Dit is een probleem als u met meerdere computers werkt en gegevens wilt overbrengen zonder tijdelijke bestanden te maken.
Eén manier om dit op te lossen is door een SSH-pipe te maken die een extern bestand kan lezen en rechtstreeks naar uw lokale systeemklembord kan sturen:
Deze opdracht maakt verbinding met uw externe machine, voert het cat-hulpprogramma uit en begint vervolgens met het lezen van het bestand “ramces.txt”. Zodra dit is gedaan, worden de externe gegevens teruggestuurd naar uw lokale machine en doorgestuurd naar uw systeemklembord.
U kunt het huidige klembord van uw systeem ook als bestand naar uw externe machine pushen met behulp van de volgende opdracht:
Leren hoe je gegevens via een netwerk kunt verzenden met behulp van UNIX-pipes en SSH is slechts de eerste stap om te begrijpen hoe computernetwerken werken. Ontdek meer over uw netwerk door bij te houden waar uw pakketten naartoe gaan met Traceroute.
Afbeelding: Mikhail Fesenko via Unsplash. Alle wijzigingen en screenshots door Ramces Red.
Geef een reactie