加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在后台shell脚本中使用netcat/cat(如何避免Stopped(tty输入)?)

发布时间:2020-12-15 19:02:28 所属栏目:安全 来源:网络整理
导读:摘要:如何在后台运行交互式任务? 详细信息:我正在尝试在ash shell(Busybox)下运行这个简单的脚本作为后台任务. myscript.sh 然而脚本立即停止… [1]+ Stopped (tty input) myscript.sh myscript.sh内容……(只有relvant部分,其他我捕获SIGINT,SIGHUP等) #
摘要:如何在后台运行交互式任务?

详细信息:我正在尝试在ash shell(Busybox)下运行这个简单的脚本作为后台任务.

myscript.sh&

然而脚本立即停止…

[1]+ Stopped (tty input) myscript.sh

myscript.sh内容……(只有relvant部分,其他我捕获SIGINT,SIGHUP等)

#!/bin/sh

catpid=0

START_COPY()
{
  cat /dev/charfile > /path/outfile &
  catpid = $! 
}

STOP_COPY()
{
  kill catpid 
}

netcat SOME_IP PORT | while read EVENT
do
  case $EVENT in
    start) START_COPY;;
    stop) STOP_COPY;;
  esac
done

从简单的命令行测试我发现bot cat和netcat尝试从tty读取.
请注意,此netcat版本没有-e来压缩tty.

现在可以做些什么来避免myscript被阻止?

我尝试过的事情没有取得任何成功:

1)netcat / cat …< / dev / tty(或tty的输出) 2)使用()在子shell中运行包含cat和netcat的块.这可能有用但是如何抓住猫的PID? 给你的专家…… 问题依然存在.
一个简单的测试,你们都可以尝试:

1)在一个终端上运行netcat -l -p 22222(不带&)

2)在另一个终端运行netcat localhost 22222& (这应该在一段时间后停止,并显示Stopped(TTY输入)消息)

怎么避免这个?

你可能想要netcat的“-d”选项,它告诉它不要从STDIN读取.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读