2009年7月19日星期日

[GFW Blog] 使用 expect 防止 sshgfw 代理断线

来源:隐清堂

自从用了 ssh -D 代理后(可参考本 blog 右边的链接),便再也不用为点击某个链接被重置的情况烦恼啦。我在 Linux 使用 ssh -D 连接代理服务器时过一段时间总会断线,于是我就用 expect 写了一个脚本,不担可以防上 ssh 断线,还可以自动输入密码 :-)

关于 expect 我摘录一段在 中文维基 上的介绍:

ExpectUnix系统中用来进行自动化控制和测试的软件工具,由Don Libes制作,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnetftpPasswdfsckrlogintipssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制

有些 linux 系统里可能没有 expect , 你可以自己安装

在 debian/ubuntu 里 : apt-get install expect
在 opensuse 里:zypper in expect
在 fedora 里: yum install expect
当然还有一些其它发行版都有自己的安装方式。

你可以新建一个文件,比如 sshgfw , 将如下代码复制进去。
#!/usr/bin/expect
set timeout 60

spawn /usr/bin/ssh -D 7070 -g user@yourserver.com
# 这里的 user 为你自己的用户名,yourserver.com  为你自己的服务器域名或 ip
expect {
"password:" {
send "password\r"
#这里的 password 改为你自己的密码
}
}
interact {
timeout 60 { send " "}
}

加上可执行权限 chmod a+x sshgfw, 然后你就可以在它所在的目录 ./sshgfw 执行就行了。当然你也可以把它复制到 /usr/local/bin 或 /usr/bin 等目录下,以方便本机所有用户都可以快捷的使用。

注:ssh 加上 -g (即在代码中的 ssh -D  7070  -g ) 可使局域网内其它机器使用我的机器做代理. 以我的情况为例:我在一个局域网内的 ip 为 192.168.1.16 , 当我联上服务器之后,我就可以使用 localhost:7070 做代理,同时我的局域网内的其它 ip 为 192.168.1.* 的机器,就可以用代理 192.168.1.16:7070 来穿墙啦。

当然如果你还有什么不了解,欢迎给我留言。我会尽量帮忙。 :-)




--
Posted By GFW Blog to GFW Blog at 7/19/2009 10:03:00 P
--~--~---------~--~----~------------~-------~--~----~
1、请点击www.chinagfw.org访问我们,订阅地址:http://feeds2.feedburner.com/chinagfwblog。2、需要Psiphon2注册邀请的朋友,请向english@sesawe.net发送电子邮件请求,说明 "can I have psiphon2 access" 并告诉您所在的国家。也可以使用Twitter Direct Messages或登陆Psiphon网站直接向Psiphon索取使用邀请。3、GFW Blog现提供最新翻墙工具下载(地址一、二、三),翻墙(突破网络封锁)方法介绍请见本站anti-censorship部分。4、本站热烈欢迎各位朋友投稿或推荐文章,请发邮件至chinagfwblog[at]gmail.com。5、敬请关注、支持、参与Sesawe和黑箱监管集体诉讼。
To unsubscribe from this group, send email to
gfw-blog+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/gfw-blog?hl=zh-CN
-~----------~----~----~----~------~----~------~--~---

没有评论:

发表评论