Назад | Перейти на главную страницу

Можно ли прослушивать TCP-порт только с помощью оболочки, без дополнительных инструментов?

Мне нужен очень простой веб-сервер в очень маленькой встроенной системе с процессором MISP. Я думал, что простейшим сервером может быть сценарий оболочки, слушающий TCP-порт.

Проблема в том, что в системе нет даже perl. Только базовая оболочка /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

И занятая коробка:

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 или что-то вроде того

Нет, базовая оболочка Bourne / POSIX (/bin/sh) нельзя ожидать, что он будет включать какие-либо встроенные средства для TCP-соединений. Видеть сравнение командных оболочек в Википедии.

В bash оболочка будет иметь возможности клиента TCP и UDP со специальной обработкой определенных имен файлов: например, используя /dev/tcp/<hostname>/<port> при перенаправлении ввода / вывода в командной строке вызывает bash подключиться к указанному хосту и порту и использовать соединение в качестве источника ввода или назначения вывода. Но bash не может прослушивать порт: он не может действовать как TCP-сервер.

В zsh оболочка будет иметь как клиентские, так и серверные функции, но только с использованием TCP. С другой стороны, zsh является не простая оболочка: это, вероятно, самая многофункциональная (и, следовательно, самая большая) из распространенных оболочек в стиле unix, насколько мне известно. обнаружение zsh на небольшой встраиваемой системе это маловероятно.

Пока я писал свой ответ, вы указали в комментариях, что нашли "lighthttpd"бинарный. Может быть, это?" https://www.lighttpd.net/