![]() |
||||
| 首页- 邮件- 社区- 短信- 新闻- 体育- 财经- 汽车- 房产家居- IT- 游戏- 生活- 健康- 女人- 旅游- 教育- 求职- 娱乐- 动漫- 校园 | ||||
| 新闻资讯 - 实用手册 - 网狐教程 - 硬件行情 - 软件精品廊 - 手机时尚 - 网络倾情 - 热点追踪 - 免费大全 - IT写作论坛 | ||
|
网狐教程首页
实用技巧 登录脚本的制作 北京教育科学研究院 郭亮 Internet 正逐渐走入我们的生活,中国互联网络信息中心(CNNIC)1999年7月的统计结果显示我国上网的用户数已达400万,其中除去76万专线用户外,其余的256万用户通过拨号方式上网。 拨号上网是指人们用调制解调器和电话线拨入拨号网络服务器,验证身份后登录到拨号网络服务器(或所在的网络)。通过它的出口联上因特网。目前国内上网用户的软件平台多为Windows 95/98, 其上最为普遍的登录方式是采用点对点协议(Peer-Peer Protocol,PPP),该协议在拨号用户与服务器之间建立点对点连接,以登录到服务器上。在这一登录过程中,服务器需要对远程用户有个身份验证,反应到操作中就是需要用户输入帐号与口令,接收用户输入的帐号与密码后,服务器经验证无误后,让用户登录,若验证失败,则不让用户登录。 在Windows 95/98中,提供了一个拨号连接程序给拨号网络用户使用,它的使用方法比较方便,在用可视界面对拨号过程进行一些配置后,即可连接使用。一般情况下,在连接程序的窗体中输入帐号密码后,登录的验证过程可在后台进行而不需用户的干预。但有时,所登录的服务器需要两次验证(往往是在路由器上多了一层验证),这样,第二次验证过程就无法在后台进行了,用户只能将登录选项改为“拨号后出终端窗口”,通过手工输入帐号密码完成第二次验证。由于帐号密码较难记忆,在终端窗口中又不能修改,往往容易因为输入错误而导致验证失败,不仅给用户带来不方便,也浪费了不少宝贵的电话费。 由于一般用户对服务器端的设置无可奈何,第二次的验证无法避免,但若能使其自动化,也就克服了手工输入的缺点了。为了实现这个功能,就要用到登录脚本。 登录脚本,顾名思义就是为了登录过程写好的脚本文件,通过文件中存储的命令行与服务器进行交互,自动完成登录过程而不需人工干预。也许有人会认为既然是跟服务器进行通讯,它所用的语言一定高深末测,但实际上,如果对它稍加分析,变会发现它其实并无太多的奥秘。 在windows 95/98中的Program Files目录中有个Accessories目录,其中有几个后缀为scp的文件,即为登录脚本文件的示例,其中pppmenu.scp是PPP登录方式的示例脚本。一个脚本文件都必须有一个名为‘Main’的过程(即一段程序),所有的脚本文件都从‘Main'开始执行。脚本中的注释以‘;’开始。下面就以pppmenu.scp为例,讲讲怎样制作一个脚本文件,需要说明的是示例中的主机(host)即上述的服务器。 本脚本文件示例怎样与一个有菜单系统的主机建立一个PPP连接。脚本文件中的过程(一段程序)以 “Proc 过程名” 开始,以 “Endproc”结束; main 过程 proc main ; 以下的变量要根据您的拨号网络服务器不同而做写改动 ; 将登录失败时重试的次数置为3 integer nTries = 3 ; 定义登录时的提示信息,将下句中的"Username:" 替换为 ; 您的主机在询问帐号时的提示信息,如"UserID:"等 string szLogin = "username:" ; 将帐号的超时时间设为3秒,即若输入帐号后3秒中主机不响应 ; 用户即超时,此次登录视为失败。 integer nLoginTimeout = 3 ; 定义系统要求密码的提示信息与超时设置 string szPW = "password:" integer nPWTimeout = 3 ; 这里定义您输入正确的帐号密码后出的提示,请按您 ; 的主机提示更改该变量的值 string szPrompt = "annex:" ; 如果您的主机在验证后显示菜单要求用户选择的话, ; 假设有如下菜单: ;1: Our special GUI ;2: Establish slip connection ;3: Establish PPP connection ;4: Establish shell access ;5: Download our software ;6: Exit ;Please enter a number to select it! ; 定义要选择的菜单项,如下的例子选择3,"^M"代表回车 string szConnect = "3^M" ; 如果不想在脚本中得到IP地址,将下列值设为False, ; 一般情况下不用在脚本中得到IP地址,建议将其用';'注释掉。 boolean bUseSlip = FALSE ; 各变量定义完毕,下面将开始执行程序 ; 延迟2秒以免主机来不及响应,建议将时间改短或注释该句 delay 2 ; 发送两各回车给主机,若非特殊需要,建议注释该句 transmit "^M^M" ; 当重试的次数小于规定的最高次数时,继续尝试登录 while 0 < nTries do ; 在输入帐号之前,等待登录提示,直到超时, ; 若出现帐号提示后,跳转到以Dologin为标签开头的语句执行, ; 执行到最后返回调用点 waitfor szLogin then DoLogin until nLoginTimeout ; 以TryAgain标签语句开始的程序段 TryAgain: ; 重试时先输入一个回车键,若主机不需如此,请注释掉 transmit "^M" ; ping ; 因为已重试过,故将重试次数减1 nTries = nTries - 1 ; 循环语句的结尾 endwhile ; 跳转到已BailOut为标签的语句执行;即转成人工输入 goto BailOut ; 以DoLogin标签语句开始的程序段 DoLogin: ; 输入帐号,请将真实帐号边上加双引号替换下面的$USERID transmit $USERID, raw ; 敲回车将帐号传给主机 transmit "^M" ; 等待主机出输入密码提示 ; 在超时时限内等待输入密码提示 waitfor szPW until nPWTimeout ; 若超时,跳到以TryAgain标签开始的地方重试 if FALSE == $SUCCESS then goto TryAgain endif ; 输入密码,请将真实帐号边上加双引号替换下面 的$PASSWORD transmit $PASSWORD, raw ; 敲回车将帐号传给主机 transmit "^M" ; 等待主机出验证成功提示 waitfor szPrompt ; 若有菜单项,选择菜单 transmit szConnect ; 若不需取得IP,建议将下面一段注释掉 if bUseSlip then ; 下列两种情况只能取一,请将另一种注释掉 ; 若知主机的IP提示,将显示IP前的提示替换下面的 "Your address is " waitfor "Your address is " set ipaddr getip ; 若不知主机的IP提示,执行下面一句取得IP set ipaddr getip 2 ; 结束If语句 endif ;跳出脚本文件 goto Done ; 以BailOut标签语句开始的程序段 BailOut: ; 出现一些不能响应的错误,将键盘打开,接受用户手工输入 set screen keyboard on ; 停止脚本文件运行 halt ; 以Done标签语句开始的程序段 Done: ;结束运行当前程序段 ; 过程结束 endproc将上述脚本按您的主机的情况在文本编辑器中配置好后,存成一个.scp文件, 在连接属性中的“制作脚本”标签中将该文件的完整名填入框中,同时选中拨号时最小化终端窗口。另外在“常规”标签中调制解调器的设置中,在选项的标签下去掉“拨号后出终端窗口”选项。 此时再拨号,帐号密码通过第一次验证后,在状态条中出现一个最小化的终端窗口,恢复它的窗口尺寸后就会发现,它与原来的终端窗口几乎一样,唯一的不同是在也不用麻烦您输入什么了,在自动验证完毕后该窗体会自动关闭,这时,您就可以畅游Internet的海洋了。 脚本在给您带来不少方便的同时,也有一个致命的弱点,那就是保密性差了,因为我们把密码用明文写在文件里了,这样,所有能看到该文件的人都有可能知道密码。所谓有得有失,在方便与保密之间,想您会有自己的选则。 本文由中国计算机世界提供。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||