echo " The NC send commands on port 2612"
while :
do
echo "hello " | nc -q -1 <some IP> 2612
done
我想永远打开一个netcat会话,这是由-q -1实现的。
如何每隔20秒在同一个地方发送“你好”。
我之前的脚本如下,但每次都会打开nc连接。 我真正想要的是打开连接一次并发送“echo hello”evey 20秒。
while :
do
echo "hello " | nc 192.168.100.161 2612
sleep 20
done
答案 0 :(得分:2)
while echo "hello"; do
sleep 20
done | nc -q 192.168.100.161 2612
请注意,我们已将echo
移至循环条件中,因此如果nc
退出(导致echo
s失败),我们就会停止尝试运行它。
如果您希望能够从循环内部保留状态(例如,计数器)并在管道退出后访问它,那么事情需要进一步改变:
#!/bin/bash
# ^^^^- process substitutions aren't part of POSIX sh
count=0
while echo "hello"; do
(( ++count ))
sleep 20
done > >(nc -q 192.168.100.161 2612)
echo "Ran $count loops before exiting" >&2
在那里,重定向是作为进程替换完成的,循环发生在退出后继续的同一个shell实例中。有关此问题和解决方案的详细信息,请参阅BashFAQ #24。