I have an embedded linux application with a simple interactive command line interface.
I\'d like to access the command line from telnet (or network, in general).
I found that by using bash v. >= 4.0 I can use coproc
:
#!/bin/bash
coproc myapp
nc -kl -p 4000 <&"${COPROC[0]}" >&"${COPROC[1]}"
EDIT
I eventually incorporated a telnet server in my cli library. You can find the result on GitHub: https://github.com/daniele77/cli
You can use ncat (from nmap package: apt install nmap
) for that as well as follow:
ncat -lnvp 443 -e myapp
don't forget to fflush(stdout);
after each printf("%s",str);
in your app
Is there a way to redirect both stdin and stdout to netcat
There is socat, which is a more advanced netcat
. You can redirect both stdin
and stdout
with it. E.g.:
socat TCP4-LISTEN:5556,reuseaddr,fork EXEC:"cat - /etc/redhat-release"
In the above cat
reads stdin
and /etc/redhat-release
and outputs them into stdout
.
And then try using that:
$ echo "hello" | nc 127.0.0.1 5556
hello
Fedora release 22 (Twenty Two)
$ echo "hello 2" | nc 127.0.0.1 5556
hello 2
Fedora release 22 (Twenty Two)