【发布时间】:2018-03-12 22:33:37
【问题描述】:
我正在尝试使用nc 以符合 POSIX 的方式执行this 之类的操作,在给出here 的第二个示例之后,它必须在sh 上运行(可以在dash 或busybox 上进行测试' ash,但不在 bash)。
我做了以下事情:
# on operator machine
nc -lvp 9999
# on remote machine
out="/tmp/.$$.out"
in="/tmp/.$$.in"
mkfifo "$out" "$in"
trap 'rm "$out" "$in"' EXIT
# nc 192.168.0.10 9999 > "$out" 0< "$in" &
cat "$in" | nc 192.168.0.10 9999 | cat > "$out" &
bash -i > "$in" 2>&1 0< "$out"
我有两个问题,请同时回答:
-
1234563仅在输入上使用管道,也仅在输出上使用管道,但两种方法都不起作用。这个
有没有办法使用 fd 而不是
mkfifo进行双向 I/O 重定向?例如,使用exec 3> dummy?记住它必须符合 POSIX,所以>(:)是不可接受的。
cat 解决方案的缺点是当您在连接到操作员机器后退出命令时,它仍然使进程在远程机器上保持活动状态,需要被杀死。我想知道为什么重定向解决方案不起作用?以及如何解决退出问题?尽管cat 解决方案不是最优雅的解决方案,但如果它能够工作,也是可以接受的。
如果 fd 解决方案是可能的,则不需要使 mkfifo 解决方案工作,但我仍然很高兴知道为什么文件重定向不起作用。
【问题讨论】: