Я использую netcat в сценарии bash как псевдосервер, чтобы запускать дополнительные скрипты bash с введенных входов. Это был какой-то приятный побочный проект, но я, похоже, застрял.Bash Параллельные процессы в Netcat -c
По существу, сценарий и код работают отлично, но вывод не отображается до тех пор, пока сервер не завершит процесс; поскольку это может быть 40-часовой процесс, нежелательно иметь клиент с экраном загрузки и без подсказки на все время.
Проще говоря, я хотел бы загрузить страницу, основанную на содержании, на точку, игнорируя вывод всего, что следует. Код у меня до сих пор выглядит следующим образом:
#!/bin/bash
while [ $? -eq 0 ]; do
nc -vlp 8080 -c'(
r=read
$r a b c
z=$r
while [ ${#z} -gt 2]; do
$r z
done
f=`echo $b|sed "s/[^a-z0-9_.-]//gi"`
o="HTTP/1.0 200 OK\r\n"
c="Content"
if [ -z "$f" ]; then
f="index.html"
echo "$o$c-Type: `file -ib $f`\n$c-Length: `stat -c%s $f`"
echo
cat $f
elif [ "$f"==Encrypt ]; then
echo $o
echo
echo $(bash ~/webSupport.sh currentEncrypt "$b")
bash ~/webSupport.sh pullVars "$b" &
else
echo -e "HTTP/1.0 404 Not Found\n\n404\n"
fi
)'
done
Я искал вокруг и не может найти способ обойти его, любая помощь будет оценена.
Извините, но это трудно скажите, что такое входы и выходы, можете ли вы расширить это? Выглядит интересно, удачи. – shellter
Входы поступают из веб-браузера, причем протокол является протоколом, b - это путь. Выходы - это базовый HTML, сценарий, который он вызывает для шифрования, по существу говорит «Запуск шифрования ...» или «Шифрование уже выполняется, подождите ...» из исходящего эха. По сути, это вызов 'sleep 500000' в линии pullVars xD – Kiradien