问题描述
我的情况如下:我有很多小的小发(离路由器很近,不完全是,但无论如何都是无关紧要的);他们正在运行基于MIPS的Linux发行版.
为了控制它们,可以在那里(通过串行端口)telnet并向类似bash的外壳发出命令,然后写回一些输出.外壳的输入和输出都附加到/dev/ttyas0.
现在,我想自动化所有这些,即编写一个将在Gizmo内运行的程序,是在某些端口上侦听的小服务器,并且会将任何命令传递给上述Shell,捕获Shell的输出并将其转交给与服务器联系的人.
i:
1)可以在Gizmo内部安装(小,<500kb)程序 2)无法修改操作系统,启动脚本,外壳,任何东西 3)有根访问 4)知道如何编写SOAP服务器 5)知道如何获取肥皂消息,将其转换为命令,然后将其注入/dev/ttyas0 6)不知道如何捕获外壳的答复 7)知道如何,将其回复,将其翻译回肥皂消息并回复原始询问者.
基本上,问题是6):如何将字符串注入/dev/ttyas0并因此使外壳执行,捕获外壳的输出?
我知道
http://http://etbe .coker.com.au/2008/02/27/重定向 - 逃离-A-a-a-a-a-a-a-aunning-process/
即.我知道,如果我的盒子里运行了GDB(或strace),我可以更改外壳的Stdout,但是我不能在那里安装它 - 它太大了,无论如何,这种方法似乎太像了.
.所以,总结:
在没有GDB或Strace的情况下,如何捕获已经运行的过程的root stdout,而无需访问该过程的启动方式?
或 - 几乎等效地 - 如何捕获纯C?
中的终端写的内容推荐答案
您可能想看看 reptyr .尽管
其他推荐答案
您是否尝试过使用 kermit 脚本?我可能会放弃试图在设备上插入更聪明的代理,然后尝试驱动现有界面.