我想打开一个netcat连接并继续发送一些文本

时间:2017-05-19 20:29:30

标签: bash netcat

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

1 个答案:

答案 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