是否可以仅使用 shell 来监听 TCP 端口,而无需其他工具?

是否可以仅使用 shell 来监听 TCP 端口,而无需其他工具?

我需要一个非常简单的 Web 服务器,它安装在一个非常小的嵌入式系统上,带有一个 MISP 处理器。我认为最简单的服务器可能是一个监听 TCP 端口的 shell 脚本。

问题是系统甚至没有 perl。只有一些基本的 shell /bin/sh。我在网上搜索“如何从 shell 监听端口”,但我找到的答案都提到了一些其他工具,例如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或类似的东西

答案1

不,基本的 Bourne/POSIX shell ( /bin/sh) 不能包含任何用于 TCP 连接的内置功能。请参阅命令 shell 的比较在维基百科中。

bashshell 具有 TCP 和 UDP 客户端功能,并对某些文件名进行特殊处理:例如,/dev/tcp/<hostname>/<port>在命令行上使用输入/输出重定向会导致bash连接到指定的主机和端口,并将该连接用作输入源或输出目标。但bash无法侦听端口:它不能充当 TCP 服务器。

该shell 将同时具有客户端和服务器功能,但仅使用zshTCP。另一方面,zsh不是一个简单的 shell:据我所知,它可能是功能最丰富(因此也是最大的)的常见 unix 风格 shell。zsh在小型嵌入式系统上找到它的可能性很小。

在我写答案的时候,你在评论中指出你发现了一个“ lighthttpd”二进制文件。可能是这个吗?https://www.lighttpd.net/

相关内容