无法结束带有标准输出可执行文件的 Bash 脚本



我不知道为什么我的问题在发表评论后没有得到跟进。但是我尝试使用

执行 3>&- 退出猫 <&amp;3 仍然一无所获

我也试过猫<&amp;3 3>&- 仍然不起作用

exec 3<>/dev/tcp/$1/37491
echo -ne 060e2b3400$hexdec$cmdhex | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' >&3
cat <&3
exec 3>&-

套接字保持打开状态。

您在cat后添加的任何内容都不起作用,因为cat阻塞,等待通过套接字进行更多输入。如果可以安排从另一个进程关闭套接字,cat将退出。

类似以下内容的方法可能有效:

exec 3<>/dev/tcp/$1/37491
echo -ne 060e2b3400$hexdec$cmdhex | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' >&3
( cat <&3; echo "Socket was closed" ) &
sleep 10
exec 3>&-

cat将在后台的子外壳中运行,阻塞直到套接字关闭。休眠 10 秒后,脚本将关闭套接字,您应该看到输出"套接字已关闭"。

相关内容

最新更新