我有一个非常简单的Bash脚本,该脚本使用nc.traditional
打开端口9999(因为nc
不再具有-e
参数),然后使用{{1}调用另一个Bash脚本}的nc.traditional
参数。第二个脚本的目的是询问连接到该端口上的Linux机器的用户的名称和 age ,并将这些信息存储在两个单独的文件中。 / p>
一切正常,除了我打算在某人进入其年龄时关闭-e
,这就是导致失败和错误的原因。据我所知,这可能是由于echo
造成的,或者是我不知道的其他原因。
当另一个脚本调用该脚本时,显然无法使用file descriptors
命令的-s
开关。
在第二个脚本中使用read
会导致在第一个脚本的输出中出现“ stty:'标准输入':设备的不适当的ioctl”错误。
我还想为我的提示定义一个超时,以便用户不会停止我的资源。当stty -echo
命令被另一个脚本召唤时,它也将不起作用。
第一个Bash脚本:
timeout
第二个Bash脚本:
#!/bin/bash
while true; do
nc.traditional -n -l -p 9999 -e ./NameAge.sh
sleep 5
done
如果您能帮助我解决这个问题,我非常感谢。
预先感谢
答案 0 :(得分:0)
问题是您(服务器)无法控制连接人员(客户端)的终端,因此您需要关闭回显才能执行所需的操作。我认为这没有解决之道。您可以使用转义码进行响应以清除上一行,但这要等到用户按Enter才起作用。