我在rc.local中放置了一个指向我脚本的链接,以便在linux debian boot上自动启动它。它启动然后在while循环停止。它是一个netcat脚本,可以在端口4001上永久监听。
echo "Start"
while read -r line
do
#some stuff to do
done < <(nc -l -p 4001)
当我使用命令./myscript以root身份启动此脚本时,它可正常工作。需要nc(netcat)根级别访问权限还是其他什么?
编辑:
rc.local中
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/etc/samba/SQLScripts
exit 0
rc.local启动我的脚本&#34; SQLScripts&#34;
SQLScripts
#! /bin/sh
# The following part always gets executed.
echo "Starting SQL Scripts" >> /var/log/SQLScriptsStart
/etc/samba/PLCCheck >> /var/log/PLCCheck &
&#34; SQLScripts&#34;开始&#34; PLCCheck&#34; (例如只有一个)
PLCCheck
#!/bin/bash
echo "before SLEEP" >> /var/log/PLCCheck
sleep 5
echo "after SLEEP" >> /var/log/PLCCheck
echo "vor While" >> /var/log/PLCCheck
while read -r line
do
echo "in While" >> /var/log/PLCCheck
done < <(netcat -u -l -p 6001)
答案 0 :(得分:0)
在rc脚本中,默认情况下您具有根级别访问权限。什么&#34;它在while循环停止&#34;意思?它会在一段时间后退出,或者等等?我想你需要在后台运行你的循环才能实现自动启动脚本中常用的功能:
echo "Starting"
( while read -r line
do
#some stuff to do
done << (nc -l -p 4001) ) &
echo "Started with pid $( jobs -p )"
答案 1 :(得分:0)
我昨天测试了大致相同的东西,我发现您可以绕过系统并使用以下 crontask 执行您的 netcat 脚本。 :
(每分钟,但您可以根据需要进行调整。)
* * * * * /home/kali/script-netcat.sh // working for me
@reboot /home/kali/script-netcat.sh // this is blocked by the system.
据我所知,我认为默认情况下 debian(可能还有其他 linux distrib)会阻止每个尝试执行 netcat 命令的脚本。