Как использовать SSH Pipe в Linux

Канал UNIX — это важный шаг вперед в развитии UNIX и UNIX-подобных операционных систем. Он позволяет пользователям выполнять сложные вычислительные задачи, связывая ввод и вывод базовых программ. Эта статья расширяет эту тему, показывая, как использовать каналы UNIX в Linux по сети с использованием протокола SSH.

Узнайте больше о Unix Pipeline

Каналы в Unix (и, как следствие, в Linux) используются для соединения программ и обеспечения их совместной работы. Например, при использовании cat вы можете отобразить содержимое файла, но если вы используете канал (|), вы можете связать команду cat с командой more, чтобы облегчить чтение файла.

кот файл1 | более

Основная идея здесь такова: программа1 fileX | программа2. Однако дело не ограничивается одним файлом и двумя программами. Трубопроводы могут стать более совершенными в соответствии с вашими потребностями, используя столько модификаторов, сколько вы сможете придумать.

Вот несколько способов эффективного использования канала (|) в ситуациях SSH.

Автоматически конвертировать сжатые папки

Один из наиболее распространенных способов использования канала UNIX — сохранение вывода программы в файл где-нибудь в локальной системе. Например, запустите echo «Hello, MakeTechEasier!» | tee Hello запустит программу echo, сохраняя при этом строку «Hello, MakeTechEasier!». внутри файла «Привет».

Как использовать SSH Pipe в Linux. Изображение 1.

Это означает, что вы можете использовать эту идею для переноса папок между двумя серверами Linux. Для этого прочитайте каталог, который вы хотите отправить, с помощью tar, затем передайте его демону SSH:

tar czf – “~/Документы/моя папка” | ssh ramces@remote.host “tar xzf – -C ~/Documents/”

Эта команда упакует ваш каталог в tar-архив и отправит его на стандартный вывод команды. Затем канал UNIX прочитает эти данные и отправит их на удаленный сервер Linux с помощью SSH.

Вы также можете отменить эту команду, чтобы удалить файлы с удаленного сервера:

ssh ramces@remote.host “tar czf – ~/Documents/myfolder” | tar xzf – -C “~/Документы/”

Отправка и получение файлов с удаленных серверов

Вы также можете использовать каналы и SSH для отправки отдельных файлов по сети. Это работает, используя cat как способ загрузки содержимого файла и отправки его через SSH:

кот мой.удаленный.файл”

Удаленный сервер получит выходной поток от локального процесса cat и перестроит файл, как и раньше.

Чтобы получить файлы с удаленного сервера, вам необходимо изменить порядок команд на обратный и указать путь к удаленному файлу:

ssh ramces@remote.host “cat my.local.file

Как использовать SSH Pipe в Linux. Изображение 2.

Резервное копирование и восстановление удаленных дисков

Подобно отправке файлов и папок, в Linux можно удаленно создавать резервные копии целых дисков, используя каналы UNIX и SSH. Это может быть полезно, если вы хотите создать быструю резервную копию вне офиса, но у вас в настоящее время нет запасного физического диска.

Чтобы создать резервную копию всего диска, запустите dd с переменной ‘if=”, установленной для диска, который вы хотите создать резервную копию, а затем передайте ее вашему демону SSH:

sudo dd if=/dev/sda | ssh ramces@remote.host “dd of=sda.img”

Отмена этой команды также позволяет восстановить образ диска с удаленного компьютера на физический диск:

ssh ramces@remote.host “dd if=sda.img” | судо дд =/dev/sda

Более того, этот синтаксис канала SSH также будет работать с отдельными разделами диска. Например, если в вашей системе есть раздел /home в «/dev/sda4», вы можете запустить следующую команду, чтобы создать резервную копию этого раздела:

sudo dd if=/dev/sda4 | ssh ramces@remote.host “dd of=home.img”

Перенаправить аудиовход на удаленный компьютер

Одним из преимуществ каналов SSH является то, что они позволяют взаимодействовать с удаленными компьютерами, как если бы они были локальными ресурсами. Это включает в себя возможность использовать файлы устройств, например аудиовход системы.

Для этого запустите удаленную подоболочку ALSA с помощью SSH и отправьте ее вывод локальному демону ALSA:

ssh ramces@remote.host “arecord -f cd” | игра

Это будет прослушивать устройство ввода звука по умолчанию на удаленном компьютере и воспроизводить то, что оно слышит в вашей системе. Это означает, что переключение команд отправляет аудиовход локального компьютера на аудиовыход удаленного сервера:

Как использовать SSH Pipe в Linux. Изображение 3.

арекорд -f компакт-диск | ssh ramces@remote.host “aplay”

Канал ALSA SSH также будет работать, если вы объедините его с другими инструментами потоковой передачи звука. Например, вы можете отправить вывод arecord из канала SSH в ffmpeg:

ssh ramces@remote.host “arecord -f cd” | ffplay -nodisp –

Потоковое видео с удаленной веб-камеры

Еще одно замечательное использование каналов SSH в Linux — потоковая передача видео с веб-камеры в реальном времени. Как и в случае со звуком, это позволяет вам использовать преимущества устройства удаленного сервера и отображать выходные данные этого устройства на вашем локальном компьютере.

Для потоковой передачи с веб-камеры удаленного сервера запустите SSH с подоболочкой ffmpeg, а затем передайте его клиенту потокового видео на локальном компьютере:

ssh ramces@remote.host “ffmpeg -r 14 -s 640×480 -f video4linux2 -i /dev/video0 -f matroska -” | mpv –demuxer=mkv /dev/stdin

Эта команда будет транслировать необработанное видео с первой веб-камеры на вашем удаленном компьютере.

Как использовать SSH Pipe в Linux. Изображение 4.

Вы также можете записать кадры с удаленной веб-камеры в отдельный файл. Вы можете сделать это, отправив данные из канала SSH на tee перед перенаправлением их на видеоплеер:

ssh ramces@remote.host “ffmpeg -r 14 -s 640×480 -f video4linux2 -i /dev/video0 -f matroska -” | тройник my_recording.mkv | mpv –demuxer=mkv /dev/stdin

Распечатать текст на удаленной консоли

Помимо аудио и видео, вы также можете использовать канал SSH для отправки необработанного текста на телетайп удаленного компьютера. Это полезно, если вы хотите отправлять сообщения о состоянии в систему, у которой нет графического интерфейса.

Для начала создайте канал FIFO на своем локальном компьютере:

mkfifo мой-фифо

Запустите команду Tail Listen, используя FIFO, и отправьте ее вывод демону SSH:

хвост -f мой-фифо | ssh root@remote.host “cat > /dev/tty0”

Проверьте, работает ли ваш новый канал FIFO по сети, отправив текстовые данные с помощью команды echo:

echo “Привет, MakeTechEasier!” >моё-фифо

Как использовать SSH Pipe в Linux. Изображение 5.

Примечание. Отправка текста на телетайп устройства будет работать только в том случае, если вы вошли в систему с учетной записью root этого устройства.

Перенос удаленных данных в локальный буфер обмена

Самый большой недостаток системного буфера обмена заключается в том, что он работает только с локальным компьютером. Это проблема, если вы работаете с несколькими компьютерами и хотите передавать данные без создания временных файлов.

Один из способов исправить это — создать канал SSH, который может читать и отправлять удаленные файлы непосредственно в буфер обмена вашей локальной системы:

ssh ramces@remote.host “кот

Эта команда подключится к вашему удаленному компьютеру, запустит утилиту cat и начнет читать файл «ramces.txt». После завершения он отправляет удаленные данные обратно на ваш локальный компьютер и перенаправляет их в системный буфер обмена.

Как использовать SSH Pipe в Linux. Изображение 6.

Вы также можете отправить текущий буфер обмена системы в виде файла на удаленный компьютер, используя следующую команду:

xclip -sel буфер обмена -o | ssh ramces@remote.host “cat > ~/clip.txt”

Изучение того, как отправлять данные по сети с помощью каналов UNIX и SSH, — это лишь первый шаг к пониманию того, как работают компьютерные сети. Узнайте больше о своей сети, отслеживая, куда идут ваши пакеты, с помощью Traceroute.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *