1、使用者必须具有该文件的读取权限。在文件中允许多线(multiple lines)设定。应该以空格或tab键来分隔字符串。-l 依所指示的锁定文件执行UUCP式的锁定。如果无法建立该文件那么chat程序将会失败。只有在chat程序因为任何原因而执行失败的情况下该锁定文件才会被删除。如果该脚本执行成功则锁定文件将会留在磁盘上。当pppd程序不再希望使用串行设备时该锁定文件将会被删除。不应该同时使用chat以及pppd的锁定选项来使用锁定文件。他们是互斥的选项而且如果你两个都使用将会引起其中一个或者另一个程序无法获得所需的锁定而失败。-t 对于要接收的预期字符串(expected string)设定
2、的超时限制。如果在该时间限制内没有接收到该字符串的话就不发送回复字符串(reply string)。可以发送一个变通(alternate)的回复或者如果没有变通的回复字符串则该脚本运行失败。一个失败的脚本会导致chat程序以一个非零错误代码结束。你也可以使用TIMEOUT字符串来指定超时限制。-r 设置报告字符串输出文件。如果你使用REPORT关键字,由此产生的字符串将写入该文件中。如果没有使用该选项而且你仍使用了REPORT关键字,输出字符串将用标准错误文件记录。-e打开echo选项。Echoing使用ECHO关键字在chat脚本的指定位置打开或者关闭。当echoing被使能,所有调制解调器
3、的输出内容将记录到标准错误文件中。-E使能环境变量替换chat脚本中的使用标准的$xxx语法的变量。-v要求chat脚本以冗长(verbose)模式执行。chat程序将记录chat脚本的执行状态,包括所有从调制解调器中接收到的文字以及发送给调制解调器的字符串。默认记录到SYSLOG去;记录方法可能会通过-S或者-s标志改变。-V要求chat脚本使用标准错误的详细模式下执行。chat程序将记录所有从调制解调器中接收到的文本和发送给调制解调器的字符串到标准错误设备中。该设备通常是运行chat或pppd程序的本地控制台。-s使用标准错误。所有由“-v”产生的日志信息和所有的错误信息将发送到标准错误。
4、-S不使用SYSLOG。默认情况下,错误信息被发送到SYSLOG。-S的使用将阻止由-v产生的日志信息和错误信息发送到SYSLOG。-T 传递一个任意字符串,通常为一个电话号码,将用于替换发送字符串中的/T替换元字符。-U 传递第二个字符串,通常是一个电话号码,将用于替换发送字符串中的/U替换元字符。当对ISDN终端适配器进行拨号时是非常有用的,它需要两个号码。script如果脚本没有以-f选项指定在文件里那么该脚本会如参数般被包含在chat程序里。CHAT脚本 chat脚本定义通信过程。一个脚本包含一个或多个“期待对方送出(expect-send)”的配对字符串(pairs of strin
5、g),以空格隔开,还有一个选择性的“期待对方送出的候补(subexpect-subsend)”配对字符串,以短线(dash)隔开。像下面这个例子:ogin:-BREAK-ogin: ppp ssword: hello2u2这一行指示chat程序应该期待“ogin:”这个字符串。如果在所分配的时间间隔内接收登录提示失败的话,那它就送出一个中断程序(break sequence)给远端然后期待“ogin:如果第一个“ogin:”被接收到那么中断程序就不会产生。一旦它接收到该登录提示则chat程序将送出ppp这个字符串然后期待“ssword:”这个提示。当他接收到到密码提示后,他将会送出密码hell
6、o2u2。一般在回复字符串后面会跟着送出一个回车(carriage return)。在“期待”字符串里除非以/r字符指令(character sequence)指定为必须否则不会期待它的出现。期待系列(expect sequence)应该只包含辨识字符串所需要的信息。因为它一般是存放在磁盘文件里,它不应该包含可变信息。通常不会以时间字符串(time strings),网络识别字符串(network identification strings),或者其他变化的数据做期待字符串。为了修正在初始化过程中(initial sequence)可能会传送错误的字符,所以寻找字符串“ogin:”而不是“l
7、ogin:”。开头的“l”字符可能接收错误而你永远找不到该字符串,即使它已经被系统发送。同样的原因,脚本寻找“ogin:”以及“ssword:”而不是“password:一个非常简单的脚本看起来可能像这样:换句话说,期待 ogin:,发送 ppp,期待 ssword:,再送出hello2u2。在实际使用上,简单的脚本是罕见的,至少在原先的字符串没有被接收时应该把候补期待(subexpect sequences)包括进来。例如,考虑下面这个例子:-ogin:这会是个比前面所用的简单脚本跟好的脚本。它会寻找相同的login:提示,然而,如果没有接收到的话,会发送出一个单独的返回序列(return
8、sequence)并且再次寻找login:。如果线路干扰掩盖掉第一个login提示那么接着送出空线路(empty line)经常将会再次产生登录提示。注释 注释可以嵌入在chat脚本中。注释是一个第一列以“#”字符开头的行。注释行仅仅被chat程序忽略。如果一个“#”出现在期待指令的第一个字母中,你应该引用该字符串。如果你想等待一个以“#”字符开头的提示符,你必须像这样写:# 现在等待注销的提示和发送字符串# logout从文件中发送数据(SENDING DATA FROM A FILE) 如果发送字符串以“”符号开头,那么该字符串的其余部分被视为一个文件名称用以获取发送字符串。如果读取文件的
9、最后一个字符是换行字符,它被删除。该文件可以是一个命名管道(或者FIFO)而不是一个普通文件。这就提供chat和其他程序通信的一个方法,例如,一个程序提供提示用户和接收用户的密码输入。ABORT字符串 许多调制解调器以字符串来回报呼叫的状态。这个字符串可能是CONNECTED或者是NO CARRIER或者是BUSY。通常要是调制解调器连接远端失败的话应该会希望结束脚本。困难的是脚本不会确切地知道它可能接收到那个调制解调器字符串。在初次尝试时,它可能接收到BUSY然而下次它可能接收到NO CARRIER。这个“失败”字符串可以用ABORT指令指定到脚本中。像下面这个例子一样写到脚本里:ABORT
10、 BUSY ABORT NO CARRIER ATZ OK ATDT5551212 CONNECT这个指令不会期待什么;而且接着发送ATZ这个字符串。对此期待的回应是OK这个字符串。当它接收到OK时,字符串ADTD5551212就进行拨号。期待字符串是CONNECT。如果接收到字串CONNECT那么就会执行脚本其余部分。然而,要是调制解调器发现电话忙线,他将会发送出BUSY这个字符串。这会使得该字符串符合失败字符命令(abort character)。这个脚本将会因为它发现一个失败字符串(abort string)而失败(fail)。如果他接收到的是NO CARRIER字符串,它也会因为同样的
11、原因而失败。不是可以接收到字符串就是字符串将终结chat脚本。CLR_ABORT字符串 这个指令允许清除以前的ABORT字符串设置。ABORT字符串被保存在一个预定大小的数组内(在编译时);CLR_ABORT将清除条目的空间回收,以便新的字符串可以使用这些空间。SAY字符串 SAY指令允许脚本在终端上通过标准错误发送字符串给用户。如果chat正在被pppd运行,而pppd是作为一个守护进程(同它的控制终端分离)运行,标准错误通常被重定向到文件/etc/ppp/connect-errors中。SAY字符串必须使用单引号或者双引号。如果字符串中需要输出回车和换行,你必须明确地将它们添加到您的字符串
12、。SAY字符串可以用来提供那些你使用了“ECHO OFF”但是仍想让用户知道发生什么的脚本段落的进度信息。一个例子是:ABORT BUSYECHO OFFSAY Dialling your ISP./n ATDT5551212TIMEOUT 120Waiting up to 2 minutes for connection . CONNECT Connected, now logging in .0 accountssword: pass$ SAY Logged in OK .0 etc .这段脚本将目前唯一的SAY字符串发送给用户,所有脚本的详细信息将保持隐藏。例如,如果上面这段脚本运行,用户将看到:Dialling your ISP.Waiting up to 2 minutes for connection . Connected, now logging in .Logged in OK .REPORT字符串 报告字符串类似于ABORT字符串。所不同的是,字符串和所有字符到下一个控制字符如回车,都被写入报告文件。报告字符串可以用来分离调制解调器的连接字符串中的发送速率和返回该值给chat用户。报告字符串的分析产生逻辑结合其他字符串过程像寻找期待字符串。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1