2011-04-05 13 views
9

嘿我可以用“telnet localhost 4242”登录到telnet现在我想执行一个命令“show network”。让telnet在一行中执行单个命令

我该如何在一行中做到这一点?

类似的东西

$远程登录本地主机4242 < - “秀网”

WOA这里的输出我想

回答

11

我发现expect做我想要什么,等到一定的输出,然后作用于它:

expect << EOF 
spawn telnet localhost 4242 
expect -re ".*>" 
send "show network\r" 
expect -re ".*>" 
send "exit\r" 
EOF 
-1

如果您还没有登录或任何东西,你可以使用一个“在这里文件”是这样的:

telnet localhost 4242 << EOF 
show network 
EOF 
+1

nope doesnt work – 2011-04-05 12:05:44

+2

是的,它绝对是的;例如,如果您使用端口25,您可以通过这种方式发送邮件,或者使用端口80,您可以通过这种方式获取网页 - 人们一直都在这样做。正如我所说,如果你不需要登录,它就可以工作。现在,如果你想提供比“不起作用”更多的细节,也许我们可以帮助你弄清楚该怎么做。 – 2011-04-05 12:12:19

+1

这就是更具可读性:http://pastebin.com/ZdckuFxq 当我使用你贴我得到什么: 尝试:: 1 ... 尝试127.0.0.1 ... 连到本地主机。 转义字符是'^]'。 欢迎OpenBSC控制接口 版权(C)2008-2010哈拉尔德·韦,霍尔格Freyther 贡献由Daniel Willmann,月吕伯,斯蒂芬施密特 迪特Spaar,安德烈亚斯Eversberg 许可了GPLv2 +:GNU GPL [...]允许由法律规定。 由外国主机关闭的连接。 我现在用期望得到什么,我想 期待<< EOF 产卵远程登录本地主机4242 期待-re “*>” 送 “走秀网\ R” 期待-re “*>” 发送“exit \ r” EOF – 2011-04-05 12:29:05