Thông tin liên hệ
- 036.686.3943
- admin@nguoicodonvn2008.info
UNIX pipe là một bước tiến lớn trong sự phát triển của hệ điều hành UNIX và giống UNIX. Nó cho phép người dùng thực hiện các tác vụ tính toán phức tạp bằng cách liên kết đầu vào và đầu ra của những chương trình cơ bản với nhau. Bài viết này mở rộng điều đó bằng cách chỉ cho bạn cách sử dụng UNIX pipe trong Linux qua mạng bằng giao thức SSH.
Các pipe trên Unix (và mở rộng ra là Linux) được sử dụng để kết nối các chương trình và làm cho chúng hoạt động cùng nhau. Ví dụ, khi sử dụng cat, bạn có thể hiển thị nội dung của file, nhưng nếu bạn sử dụng dấu gạch đứng (|), bạn có thể xâu chuỗi lệnh cat với lệnh more để giúp đọc file dễ dàng hơn.
cat file1 | more
Ý tưởng cơ bản ở đây là: program1 fileX | program2. Tuy nhiên, nó không chỉ giới hạn ở một file và hai chương trình. Piping có thể trở nên tiên tiến hơn theo nhu cầu của bạn, với nhiều công cụ sửa đổi mà bạn có thể nghĩ ra.
Dưới đây là một số cách để sử dụng tốt pipe (|) trong các tình huống SSH.
Một trong những cách phổ biến nhất khi sử dụng UNIX pipe là lưu trữ đầu ra của chương trình vào một file ở đâu đó trong hệ thống cục bộ. Ví dụ, chạy echo "Hello, MakeTechEasier!" | tee Hello sẽ chạy chương trình echo đồng thời lưu trữ chuỗi “Hello, MakeTechEasier!” bên trong file “Hello”.

Điều đó có nghĩa là bạn có thể sử dụng ý tưởng này để chuyển các thư mục trên hai máy chủ Linux. Để làm điều đó, hãy đọc thư mục bạn muốn gửi bằng tar, sau đó chuyển thư mục đó tới SSH daemon:
tar czf - "~/Documents/myfolder" | ssh ramces@remote.host "tar xzf - -C ~/Documents/"
Lệnh này sẽ gói thư mục của bạn vào một kho lưu trữ tar và gửi nó đến đầu ra tiêu chuẩn của lệnh. Sau đó, UNIX pipe sẽ đọc dữ liệu đó và gửi nó đến máy chủ Linux từ xa của bạn bằng SSH.
Bạn cũng có thể đảo ngược lệnh này để lấy file của mình ra khỏi máy chủ từ xa:
ssh ramces@remote.host "tar czf - ~/Documents/myfolder" | tar xzf - -C "~/Documents/"
Bạn cũng có thể sử dụng pipe và SSH để gửi các file riêng lẻ qua mạng. Điều này hoạt động bằng cách sử dụng cat như một cách để tải nội dung của file và gửi file đó qua SSH:
cat < my.local.file | ssh ramces@remote.host "cat > my.remote.file"
Máy chủ từ xa sẽ nhận luồng đầu ra từ tiến trình cat cục bộ và xây dựng lại file như cũ.
Để truy xuất file từ máy chủ từ xa, bạn cần đảo ngược thứ tự của lệnh và cung cấp đường dẫn cho file từ xa:
ssh ramces@remote.host "cat < my.remote.file" | cat > my.local.file

Tương tự như việc gửi file và thư mục, có thể sao lưu từ xa toàn bộ ổ trong Linux bằng UNIX pipe và SSH. Điều này có thể hữu ích nếu bạn muốn tạo bản sao lưu ngoại vi nhanh chóng và hiện tại bạn không có ổ vật lý dự phòng.
Để sao lưu toàn bộ ổ, hãy chạy dd với biến “if=” được đặt thành ổ bạn muốn sao lưu, sau đó chuyển nó sang SSH daemon của bạn:
sudo dd if=/dev/sda | ssh ramces@remote.host "dd of=sda.img"
Đảo ngược lệnh này cũng cho phép bạn khôi phục disk image từ máy từ xa sang ổ đĩa vật lý:
ssh ramces@remote.host "dd if=sda.img" | sudo dd of=/dev/sda
Hơn nữa, cú pháp SSH pipe này cũng sẽ hoạt động với các phân vùng ổ đĩa rời rạc. Ví dụ, nếu hệ thống của bạn có phân vùng /home trong “/dev/sda4”, bạn có thể chạy lệnh sau để tạo bản sao lưu của phân vùng đó:
sudo dd if=/dev/sda4 | ssh ramces@remote.host "dd of=home.img"
Một trong những lợi ích của SSH pipe là chúng cho phép bạn tương tác với các máy từ xa như thể chúng là tài nguyên cục bộ. Điều này bao gồm khả năng khai thác các file thiết bị, chẳng hạn như đầu vào âm thanh của hệ thống.
Để thực hiện việc này, hãy chạy một subshell ALSA từ xa bằng SSH và gửi đầu ra của nó tới daemon ALSA cục bộ của bạn:
ssh ramces@remote.host "arecord -f cd" | aplay
Điều này sẽ lắng nghe thiết bị đầu vào âm thanh mặc định trên máy từ xa và phát những gì nó nghe được trên hệ thống của bạn. Điều đó có nghĩa là, việc lật các lệnh xung quanh sẽ gửi đầu vào âm thanh của máy cục bộ đến đầu ra âm thanh của máy chủ từ xa:

arecord -f cd | ssh ramces@remote.host "aplay"
ALSA SSH pipe cũng sẽ hoạt động khi bạn kết hợp nó với các công cụ phát âm thanh khác. Chẳng hạn, bạn có thể gửi đầu ra arecord từ SSH pipe tới ffmpeg:
ssh ramces@remote.host "arecord -f cd" | ffplay -nodisp -
Một cách sử dụng tuyệt vời khác của các SSH pipe trong Linux là truyền phát các nguồn cấp dữ liệu webcam video trực tiếp. Cũng giống như âm thanh, điều này cho phép bạn tận dụng lợi thế thiết bị của máy chủ từ xa và hiển thị đầu ra của thiết bị đó trên máy cục bộ của bạn.
Để truyền phát từ webcam của máy chủ từ xa, hãy chạy SSH với shell con ffmpeg, sau đó chuyển nó tới ứng dụng client phát video trên máy cục bộ của bạn:
ssh ramces@remote.host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mpv --demuxer=mkv /dev/stdin
Lệnh này sẽ truyền phát video thô từ webcam đầu tiên trên máy từ xa của bạn.

Bạn cũng có thể ghi lại cảnh quay từ webcam từ xa sang một file riêng. Bạn có thể thực hiện việc này bằng cách gửi dữ liệu từ SSH pipe tới tee trước khi chuyển hướng dữ liệu đó đến trình phát video của mình:
ssh ramces@remote.host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee my_recording.mkv | mpv --demuxer=mkv /dev/stdin
Ngoài âm thanh và video, bạn cũng có thể sử dụng SSH pipe để gửi văn bản thô trên TTY của máy từ xa. Điều này hữu ích nếu bạn muốn gửi thông báo trạng thái tới hệ thống không có GUI.
Để bắt đầu, hãy tạo một FIFO pipe trên máy cục bộ của bạn:
mkfifo my-fifo
Chạy lệnh nghe tail bằng FIFO của bạn và gửi đầu ra của nó tới SSH daemon:
tail -f my-fifo | ssh root@remote.host "cat > /dev/tty0"
Kiểm tra xem FIFO pipe mới của bạn có hoạt động qua mạng hay không bằng cách gửi dữ liệu văn bản bằng lệnh echo:
echo "Hello, MakeTechEasier!" > my-fifo

Lưu ý: Việc gửi văn bản tới TTY của máy sẽ chỉ hoạt động nếu bạn đăng nhập bằng tài khoản root của máy đó.
Nhược điểm lớn nhất của clipboard hệ thống là nó chỉ hoạt động với máy cục bộ. Đây là sự cố nếu bạn đang làm việc với nhiều máy tính và muốn truyền dữ liệu mà không tạo file tạm thời.
Một cách để khắc phục điều này là tạo một SSH pipe có thể đọc và gửi file từ xa trực tiếp vào clipboard hệ thống cục bộ của bạn:
ssh ramces@remote.host "cat < ~/ramces.txt" | xclip -sel clipboard
Lệnh này sẽ kết nối với máy từ xa của bạn, chạy tiện ích cat sau đó bắt đầu đọc file “ramces.txt”. Sau khi hoàn tất, nó sẽ gửi dữ liệu từ xa trở lại máy cục bộ của bạn và chuyển hướng dữ liệu đó đến clipboard hệ thống.

Bạn cũng có thể đẩy clipboard hiện tại của hệ thống dưới dạng file trên máy từ xa bằng cách sử dụng lệnh sau:
xclip -sel clipboard -o | ssh ramces@remote.host "cat > ~/clip.txt"
Học cách gửi dữ liệu qua mạng bằng cách sử dụng UNIX pipe và SSH chỉ là bước đầu tiên để hiểu cách mạng máy tính hoạt động. Tìm hiểu thêm về mạng của bạn bằng cách theo dõi nơi các gói của bạn đi bằng Traceroute.
Nguồn tin: Quantrimang.com
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn
Cách cấu hình agent để giao tiếp bằng nhiều ngôn ngữ trong ElevenAgents
Hướng dẫn dùng Claude Haiku 5.5 làm trợ lý phân loại trong Claude Code
Cách thiết kế giọng nói sống động, lôi cuốn cho ElevenLabs Agents
Cách kết nối Google Drive với Gemini Spark đọc và xử lý tài liệu
Chế độ Sinh viên trong Gemini: Không gian học tập có lộ trình
Cách biến ý tưởng thành thiết kế bằng MagicPath trong ChatGPT
TOP công cụ AI tạo workflow tốt nhất
TOP trình duyệt web AI tốt nhất
Cách cung cấp kiến thức phù hợp cho agent trong Microsoft Copilot Studio
Thiết lập cơ sở kiến thức cho ElevenAgents
15 prompt AI thú vị cho ngày lễ Halloween
Hướng dẫn chat bằng giọng nói trên Dola AI
Top công cụ AI tốt nhất cho Digital Marketing
Hướng dẫn tạo giọng nói cá nhân trên Dola AI
tOP plugin ChatGPT tốt nhất để lên kế hoạch du lịch
Trình tự đảm bảo tính an toàn cho quy trình tự động hóa trong Grok Bot
Tìm hiểu về chế độ Expressive trong ElevenAgents
Cách kích hoạt plugin Gmail trên ChatGPT và prompt ví dụ
TOP plugin Notion hữu ích nên sử dụng ngay
Hướng dẫn tạo video chúc mừng ngày Nhà giáo Việt Nam 20/11
Cách lập trình chuyên nghiệp hơn, dễ dàng hơn với tính năng Tệp trên Grok
Hướng dẫn cài đặt và sử dụng n8n trên Windows 11
Công thức tính diện tích hình Elip
Hướng dẫn ngắt kết nối ứng dụng trên ChatGPT
8 ứng dụng Microsoft Store miễn phí giúp Windows tốt hơ
Hướng dẫn tạo đoạn hội thoại cho topic trên Twee
6 cách mở Computer/System Properties trong Windows 10
Đừng chia sẻ ảnh cho đến khi bạn chạy kiểm tra siêu dữ liệu này!
Bức tranh tổng quan về hỗ trợ khách hàng tích hợp AI
Cách sửa lỗi There Are Currently No Power Options Available Windows