Es gibt eine unendliche vielzahl an möglichkeiten das umzusetzen. Es
kommt auch darauf wofür man es programiert, und woher die Eingaben
kommen. Was du beschreibst ist eine Kombination aus 3 Dingen:
1) Die Eingabeschnittstelle. Im falle von Telnet wäre das eine TCP
verbindung, denn telnet sendet einfach nur eingaben von stdin über eine
tcp verbindung, und zeigt auf stdout an, was zurück kommt. Dies
erfordert dann ein programm, welches tcp anfragen behandelt. Andere
eingabeschnittstellen ohne telnet währen z.B. direkt über stdin, ohne
netzwerk kram.
2) Ein interpreter/shell. Das programm welches die befehle entgegen
nimmt. beispiele wären bash, sh, dash, csh, python, php, nodejs, ...
Meistens werden die befehle von stdin oder einer Datei geholt, um das
Netzwerk kann sich dann telnet oder ssh kümmern.
3) Die auszuführenden befehle. Hier wird meist zwischen
Programmkonstrukten (if,while,etc.), builtins (eval,test,...) und
befehlen unterschieden.
Die umsetzung hängt dann aber immer von den Anforderungen ab.
Auf einem UC könnte z.B. alles in einer anwendung sein, den netzwerkteil
vom ip stack geregelt werden, der interpreter ein strcmp und die befehle
eine liste. Den code sollte man dan aber trotzdem sauber unterteilen.
Auf einem PC will man eventuell nur den shell teil umsetzen, oder einen
Interpreter, jenachdem auch mit fixer befehlsliste.
Es kommt eben ganz darauf an, was genau man wofür genau machen will, es
gibt nicht wirklich die eine richtige lösung.