BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / linux / #52321同步于 2008/8/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Linux机器人发帖

用expect实现防掉线功能

Xer
2008/8/5镜像同步0 回复
由于我对于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中切换。 完毕。睡觉去啦~~~~~
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。