Мне нужен очень простой веб-сервер на очень маленькой встраиваемой системе с процессором MISP. Я подумал, что простейшим сервером может быть shell-скрипт, прослушивающий TCP-порт.
Проблема в том, что в системе нет даже perl. Только какой-то базовый shell /bin/sh
. Я искал в Интернете "как прослушивать порт из оболочки", но все ответы, которые я нашел, ссылались на некоторые другие инструменты, такие как nc
, которых у меня нет.
Возможно ли это вообще сделать?
В системе, это маршрутизатор, установлен busybox и некоторые другие двоичные файлы в каталоге /bin
, это:
#ls /bin
chown df fatattr gzip login mount
ping rm shuf touch usleep
busybox comgt dmesg fgrep hostname ls
mv ping6 rmdir sleep true vi
busybox-new cp echo flock ip mkdir
netstat printf sdparm split umount watch
cat date egrep grep kill mknod
nice ps sed sync uname wget
chmod dd false gunzip ln more
pidof pwd sh tar unlink zcat
И busybox:
Currently defined functions:
[, arp, ash, awk, basename, busybox, cat, chmod, chown, cp, crond,
cut,date, dd, df, dirname, dmesg, du, echo, egrep, env, expr, false,
fdisk, fgrep, find, free, ftpget, getty, grep, head, hexdump,
hostname, ifconfig, init, insmod, ip, kill, killall, klogd, ln,
login, ls, lsmod, md5sum, mkdir, mknod, mkswap, modprobe, more,
mount, mv, netstat, nslookup, passwd, pidof, ping, ping6, ps, pwd,
readlink, reboot, renice, rm, rmdir, rmmod, route, sed, seq, sh,
sleep, sort, swapoff, swapon, sync, sysctl, syslogd, tail, tar,
taskset, test, tftp, time, top, touch, tr, traceroute, true, udhcpd,
umount, uname, unzip, uptime, usleep, vi, watch, wc, which,
xargs, yes
У него также есть некоторые другие вещи в других местах из PATH, но нет nc
, нет httpd
или чего-то подобного
Нет, основная оболочка Границы/POSIX (/bin/sh
), как могут ожидать, не будет включать встроенных средств для соединений TCP. См. сравнение командных процессоров в Википедии.
Эти bash
оболочка имела бы TCP и клиентские возможности UDP со специальной обработкой определенных имен файлов: например, использование /dev/tcp/<hostname>/<port>
в перенаправлении ввода/вывода на командной строке вызывает bash
подключение к указанному хосту и порту, и используйте соединение в качестве входного источника или произведите место назначения. Но bash
не может послушать на порте: это не может действовать как сервер TCP.
Эти zsh
оболочка имела бы обе функциональности клиента и сервера, но только использование TCP. С другой стороны, zsh
не простая оболочка: это является, вероятно, самым многофункциональным (и так самое большое) общих оболочек стиля Unix насколько я знаю. Нахождение zsh
в маленькой встроенной системе было бы довольно маловероятно.
, В то время как я писал свой ответ, Вы указали в комментариях, что Вы нашли" lighthttpd
" двоичный файл. Это - возможно, это? https://www.lighttpd.net /