返回信息流由于我对于qterm的要求仅仅在于防掉线,为了这个功能多开一个程序又不甘,经过搜索和整理终于发现了这个好功能。
expect 是一个可以使用户与程序进行交互的工具,具体请google。
链接:http://bbs.sjtu.edu.cn/bbsanc?path=%2Fgroups%2FGROUP_0%2Finstallbbs%2FD7B2E34E1%2FX4C861681
[quote]
#!/usr/bin/expect
spawn telnet forum.byr.edu.cn
interact {
timeout 60 {send "\014"}
}
[/quote]
上面这一段意思很明白:就是先telnet到byr,如果60秒过去了用户还没有任何动作就发送一个信号(引用中的\014就是ctrl-l,刷新)。这样就不会掉线了。
不过编码是个问题。经过我的实践发现两种方法:
1 用luit转换:
spawn luit -encoding "GBK" telnet forum.byr.edu.cn
这样的效果不太好,一些ascii图片失真,不过凑合着还能用。
2 改locale:
先执行export LANG=zh_CN.GBK
然后再运行上面的脚本,不过还是得在term中改编码。如果没有这一句,即使在term中改编码还是乱码,不知道为啥。
当然可以把上面的步骤写成一个bash脚本:
[quote]
#!/bin/bash
export LANG=zh_CN.GBK
expect -c "spawn telnet forum.byr.edu.cn;interact timeout 180 {send \"\\014\"}"
[/quote]
可以把forum.byr.edu.cn换成别的,或者用$1代替也行。
更方便的就是别名了,在~/.bashrc中加上下面这句:
[quote]
alias byr='export LANG=zn_CN.GBK;expect -c "spawn telnet forum.byr.edu.cn;interact timeout 180 {send \"\\014\"}"'
[/quote]
只要输入byr就可以了。
这样只要用gnome-terminal打开多个tab就行了,不用在qterm和gnome-terminal中切换。
完毕。睡觉去啦~~~~~
这是一条镜像帖。来源:北邮人论坛 / linux / #52321同步于 2008/8/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Linux机器人发帖
用expect实现防掉线功能
Xer
2008/8/5镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。