nc server não funciona se for iniciado na inicialização

0

Eu escrevi um script (ba) sh para gravar em um arquivo o conteúdo recebido de um método POST:

#!/bin/sh
PORT=$1
FILE=$2

while true
do
  echo -e "HTTP/1.1 200 OK\n\n" | ./busybox-armv7l nc -l -p $PORT | tr '[\r\n]' '#' | sed "s/.*##//" | tr '#' '\n' | ( read line; echo $line > $FILE; echo $line )
done

Se eu iniciar o script no console, tudo funcionará bem:

./server 5000 /tmp/foo

e o arquivo especificado é preenchido com os dados recebidos. Mas quando eu tento lançá-lo na inicialização, não funciona mais. Como é um dispositivo comercial incorporado, tenho um script em /use/sbin/init.sh , onde posso adicionar meus próprios scripts:

#!/bin/sh
export PATH=/usr/bin:/bin/:/usr/sbin:/sbin

mount -t proc none /proc
mount -t sysfs none /sys
mount -t tmpfs none /tmp

export MACHINE_ID='cat /sys/devices/soc0/machine | sed 's/ /-/g''

echo 8 >/proc/sys/kernel/printk

mkdir -p /dev/pts
mount -t devpts devpts /dev/pts -ogid=5,mode=620

ln -snf /tmp /dev/shm

mkdir /tmp/sd
mount -t vfat /dev/mmcblk0p1 /tmp/sd -o rw

depmod -a

/etc/init.d/syslog start

ifconfig lo up
ifconfig eth0 up
sleep 1s
mii-tool --reset

ifconfig eth0 192.168.1.132

[ ! -x /etc/dropbear/dropbear_rsa_host_key ] || /usr/sbin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
[ ! -x /etc/dropbear/dropbear_dss_host_key ] || /usr/sbin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key

/usr/sbin/dropbear -r /etc/dropbear/dropbear_rsa_host_key -p 22

/home/root/server.sh 5000 /tmp/foo > /tmp/log.txt &

/bin/sh

acontece que o servidor nc não recebe nada e o log.txt é continuamente preenchido com \n .

Você vê algo obviamente errado aqui? De que maneira posso depurar ainda mais o problema?

    
por Mark 27.11.2018 / 10:32

1 resposta

0

Use caminhos absolutos em vez de relativos, para que o executável solicitado possa ser encontrado mesmo quando o diretório atual for diferente:

echo -e "HTTP/1.1 200 OK\n\n" | /home/root/busybox-armv7l nc -l -p $PORT | tr '[\r\n]' '#' | sed "s/.*##//" | tr '#' '\n' | ( read line; echo $line > $FILE; echo $line )
    
por 27.11.2018 / 13:22