Terminal 通过终端持续监听tcp端口

Terminal 通过终端持续监听tcp端口,terminal,netcat,Terminal,Netcat,是否可以连续监听端口 我使用以下命令侦听传入的tcp通知 sudo nc -l -p 999 但一旦通知到达,我就必须使用相同的命令重新启动侦听。在用户决定中止侦听之前,是否可以在通知到达时侦听端口而不必重新启动命令?用一个简单的bash脚本解决 #!/bin/bash #Make Sure Script Is Ran As Root if [ $(id -u) != 0 ]; then echo; echo -e "\e[1;31mScript must be run as sud

是否可以连续监听端口

我使用以下命令侦听传入的tcp通知

sudo nc -l -p 999

但一旦通知到达,我就必须使用相同的命令重新启动侦听。在用户决定中止侦听之前,是否可以在通知到达时侦听端口而不必重新启动命令?

用一个简单的bash脚本解决

#!/bin/bash

#Make Sure Script Is Ran As Root
if [ $(id -u) != 0 ]; then
    echo; echo -e "\e[1;31mScript must be run as sudo. Please Type \"sudo\" To Run As Root \e[0m"; echo    
exit 1
fi

echo "Enter port to listen"
read portL

while true;
do
    nc -l -p $portL
done
exit 0

谢谢dreamlax的提示

有点过时的问题,但首先出现在我的谷歌搜索中

为了使netcat不会在收到第一个连接后立即关闭,您可以添加
-k
选项

从那个男人那里:

-k强制nc在当前连接完成后继续侦听另一个连接。在没有-l选项的情况下使用此选项是错误的


Src:

正是如此,所以无论何时通知到达,都应该在终端中打印,而不需要手动重新启动命令;do nc-l-p 999;done我得到一个语法错误sudo而true;do nc-l-p 999;done bash:意外标记“do”附近的语法错误如果要将其与
sudo
一起使用,则必须在为true时使用
sudo sh-c;do nc-l-p 999;“完成”
我会避免像那样将
sudo
放入循环中。。。除非配置为不提示输入密码,否则如果在15分钟内没有收到任何信息(或系统上配置了sudo超时),并且再次运行
sudo
,则可能会导致问题。最好从脚本中删除sudo,然后以sudo的身份运行脚本?是的,我想那会更好!我要强调的是:只需以root用户身份运行它,并让它检查真实UID是否为0。或者,以用户身份运行它,sudo配置为NOPASSWD ALL。两种选择。如果有提示需要处理的话,你将无法实现自动化。(不要尝试一些建议,尝试“回答”密码提示,呃)