chat(8)程序 man手册

chat程序是用于与调制解调器进行自动对话的工具,主要用于在pppd之间建立连接。它通过一系列的期待-发送字符串对来定义交互流程,能处理各种中止和报告字符串,支持从文件发送数据,控制回显和超时等。chat脚本可以包含注释、环境变量替换和转义序列,以适应不同的通信场景。
摘要由CSDN通过智能技术生成

chat详细解释——man手册翻译

NAME 名字

chat - Automated conversational script with a modem

chat -带有调制解调器的自动对话脚本

SYNOPSIS 简介

chat [ options ] script

chat [选项] 脚本

DESCRIPTION 描述

The chat program defines a conversational exchange between the computer and the modem. Its primary purpose is to establish the connection between the Point-to-Point Protocol Daemon (pppd) and the remote’s pppd process.

chat程序定义了计算机和调制解调器之间的对话交换。它的主要目的是在点对点协议守护进程(pppd)和远程的pppd进程之间建立连接。

OPTIONS 选项

-f <chat file>

从chat文件中读取chat脚本。这个选项的使用与chat脚本参数是互斥的。用户必须具有对文件的读访问权限。文件中允许有多行。应该使用空格或水平制表符来分隔字符串。

- t <timeout>

设置接收的预期字符串的超时时间。如果在时间限制内没有收到字符串,则不发送应答字符串。可能会发送一个备用回复,如果没有备用回复字符串,脚本将会失败。失败的脚本将导致聊天程序以非零错误代码终止。您还可以使用TIMEOUT字符串来指定超时。

- r <report file>

设置报告字符串输出的文件。如果使用关键字REPORT,结果字符串将写入此文件。如果未使用此选项,而您仍然使用REPORT关键字,则将对报告字符串使用stderr文件。

-e

开启echo选项。通过使用ECHO关键字,可以在聊天脚本的特定点打开或关闭回显。当启用了回显时,调制解调器的所有输出都会回显到标准错误。

-E

使用标准的$xxx语法在聊天脚本中启用环境变量替换。

-v

请求以详细模式执行chat脚本。chat程序将记录chat脚本的执行状态,以及从调制解调器接收到的所有文本和发送到调制解调器的输出字符串。默认情况下是通过SYSLOG进行日志记录;可以使用-S和-S标志更改日志记录方法。

-V

请求聊天脚本以stderr verbose模式执行。然后聊天程序将记录从调制解调器接收到的所有文本和发送到调制解调器的输出字符串到stderr设备。这个设备通常是运行聊天或pppd程序的工作站的本地控制台。

-s

使用 stderr。所有来自’-v’的日志消息和所有错误消息将被发送到stderr。

-S

不使用SYSLOG。缺省情况下,向SYSLOG发送错误消息。使用-S将防止’-v’的日志消息和错误消息被发送到SYSLOG。

-T <phone number>

传入一个任意字符串,通常是一个电话号码,该字符串将被替换为发送字符串中的\T替换元字符。

-U <phone number 2>

传入第二个字符串,通常是一个电话号码,该字符串将被替换为发送字符串中的\U替换元字符。这在拨号需要两个号码的ISDN终端适配器时很有用。

script

如果该脚本没有在文件中使用 -f 选项指定,那么该脚本将作为参数包含到**chat**程序中。


CHAT SCRIPT 聊天脚本

chat 脚本定义通信。

​ 一个脚本包含一个或多个“expect-send”字符串对,用空格分隔,还有一个可选的“subbeexpect -subsend”字符串对,用破折号分隔,如下所示:

ogin:-BREAK-ogin: ppp ssword: hello2u2

​ 这一行表明chat程序应该期待字符串 “ogin:” 。如果它在分配的时间间隔内没有收到登录提示,它将向远程发送一个中断序列,然后期待字符串 “ogin:” 。如果接收到第一个 “ogin:” ,则不生成中断序列。

​ 一旦它收到登录提示,chat程序将发送字符串ppp,然后期待提示“ssword:”。当它收到密码提示时,它将发送密码 hello2u2

​ 通常在应答字符串之后发送一个回车符。它不期望出现在“expect”字符串中,除非使用\r字符序列特别请求它。

​ 预期序列应该只包含标识字符串所需的内容。因为它通常存储在磁盘文件中,所以它不应该包含变量信息。将时间字符串、网络标识字符串或其他可变数据片段作为期望字符串通常是不可接受的。

​ 为了帮助纠正在初始序列中可能被损坏的字符,请查找字符串"ogin:“而不是"login:”。开头的“l”字符可能会被错误接收,您可能永远不会找到字符串,即使它是由系统发送的。因此,脚本查找“ogin:”而不是“login:”,查找“ssword:”而不是“password:”。

一个非常简单的脚本可能是这样的:

ogin: ppp ssword: hello2u2

换句话说,期望…ogin: 发送 ppp,期待…ssword: 发送 hello2u2

​ 在实际操作中,简单的脚本很少。至少,如果不接收原始字符串,应该包括子期望序列。

例如,考虑下面的脚本:

ogin:–ogin: ppp ssword: hello2u2

​ 这将是一个比之前使用的简单脚本更好的脚本。这将查找相同的login: prompt,但是,如果没有收到,就发送一个返回序列,然后它将再次查找 login: 。如果行噪声掩盖了第一个登录提示,那么发送空行通常会再次生成登录提示。


COMMENTS 注释

注释可以嵌入到 chat 脚本中。注释是列1中以**#(hash)**字符开始的一行。chat程序只会忽略这样的注释行。如果’#'字符将作为预期序列的第一个字符,则应该引用预期字符串。如果你想等待一个以#(hash)字符开始的提示符,你必须这样写:

# Now wait for the prompt and send logout string

'# ’ logout

#现在等待提示并发送注销字符串

“#”注销

SENDING DATA FROM A FILE 从文件发送数据

如果要发送的字符串以at(@)开始,那么字符串的其余部分将被视为要读取的文件名称,以获得要发送的字符串。如果数据读取的最后一个字符是换行符,则将其删除。该文件可以是一个命名管道(或fifo),而不是一个常规文件。这为聊天提供了一种与另一个程序通信的方式,例如,一个程序提示用户并接收输入的密码。

ABORT STRINGS 终止的字符串

许多调制解调器将以字符串的形式报告呼叫状态。这些字符串可以是CONNECTED, NO CARRIER或BUSY。如果调制解调器无法连接到远程设备,通常需要终止脚本。困难在于脚本无法确切地知道它可能接收到哪个调制解调器字符串。在一次尝试中,它可能收到BUSY,而下一次可能收到NO CARRIER。

这些"abort"字符串可以在脚本中使用abort序列指定。它在脚本中如下所示:

ABORT BUSY

ABORT ‘NO CARRIER’

‘’ ATZ

OK

ATDT5551212

CONNECT

这个序列将没有任何期望;然后发送字符串ATZ。这个的预期响应是字符串OK。当接收到OK时,字符串ATDT5551212拨出电话。预期的字符串是CONNECT。如果接收到字符串CONNECT,则执行脚本的其余部分。然而,如果调制解调器发现电话占线,它将发送busy字符串。这将使字符串与中止字符序列匹配。然后脚本将失败,因为它找到了与中止字符串匹配的字符串。如果它接收到字符串NO CARRIER,它将因为同样的原因中止。可以接收任意一个字符串。任何一个字符串都将终止聊天脚本。

CLR_ABORT STRINGS 字符串

​ 这个序列允许清除先前设置的ABORT字符串。ABORT字符串保存在一个预先确定大小的数组中(在编译时);CLR_ABORT将为清除的条目回收空间,以便新字符串可以使用该空间。

SAY STRINGS 表示字符串

​ SAY指令允许脚本通过标准错误将字符串发送给终端用户。如果chat是由pppd运行的,并且pppd是作为守护进程运行的(与它的控制终端分离),标准错误通常会被重定向到文件/etc/ppp /connect-errors。

​ SAY字符串必须用单引号或双引号括起来。如果要输出的字符串中需要回车和换行,则必须显式地将它们添加到字符串中。

​ SAY字符串可以用于在脚本中你想要’ECHO OFF’的部分给出进度消息,但仍然让用户知道正在发生什么。一个例子是:

ABORT BUSY
ECHO OFF
SAY "Dialling your ISP...\n"
'' ATDT5551212
TIMEOUT 120
SAY "Waiting up to 2 minutes for connection ... "
CONNECT ''
SAY "Connected, now logging in ...\n"
ogin: account
ssword: pass
$ \c
SAY "Logged in OK ... \n" etc ...

这个序列将只向用户显示SAY字符串,脚本的所有细节将保持隐藏。例如,如果上面的脚本工作,用户将看到:

Dialling your ISP...
Waiting up to 2 minutes for connection ...  Connected, now logging in ...
Logged in OK ...

拨号ISP……
等待高达2分钟的连接…已连接,正在登录…
登录OK…

REPORT STRINGS 报告的字符串

报告字符串类似于中止字符串。不同的是,字符串和下一个控制字符(如回车)的所有字符都被写入报告文件。

报告字符串可以用来隔离调制解调器连接字符串的传输速率,并将值返回给聊天用户。报告字符串逻辑的分析与其他字符串处理(如查找预期字符串)一起进行。对报告和中止序列使用相同的字符串可能不是很有用,但这是可能的。

报告字符串不更改程序的完成代码。

这些“报告”字符串可以使用report序列在脚本中指定。它在脚本中如下所示:

REPORT CONNECT ABORT BUSY " ATDT5551212 CONNECT " login:帐号

这个序列将没有任何期望;然后发送字符串ATDT5551212拨打电话。预期的字符串是CONNECT。如果接收到字符串CONNECT,则执行脚本的其余部分。此外,程序将向期望文件写入字符串“CONNECT”以及它后面的任何字符,如连接速率。

CLR_REPORT STRINGS

​ 这个序列允许清除以前设置的REPORT字符串。REPORT字符串保存在一个预先确定大小的数组中(在编译时);CLR_REPORT将为清除的条目回收空间,以便新字符串可以使用该空间。

ECHO 回显

​ 回显选项控制调制解调器的输出是否回显到stderr。这个选项可以用-e选项设置,但也可以通过ECHO关键字控制。“期望-发送”对ECHO ON启用回显,ECHO OFF禁用回显。使用这个关键字,您可以选择对话的哪些部分应该是可见的。例如,下面的脚本:

ABORT   'BUSY'
ABORT   'NO CARRIER'
''      ATZ
OK\r\n  ATD1234567
\r\n    \c
ECHO    ON
CONNECT \c
ogin:   account

调制解调器配置和拨号产生的所有输出是不可见的,但从CONNECT(或BUSY)消息开始,一切都将回显。

HANGUP 挂起

​ HANGUP选项控制调制解调器挂起是否应该被视为错误。这个选项在拨号系统的脚本中很有用,它将挂起并回调系统。挂起选项可以是ON或OFF。当HANGUP设置OFF,调制解调器挂断(例如,在登录回调系统的第一阶段后),chat将继续运行脚本(例如,等待来电和第二阶段登录提示)。一旦传入呼叫被连接,您应该使用HANGUP ON指令重新安装正常的挂机信号行为。下面是一个(简单的)示例脚本:

ABORT     'BUSY'
''        ATZ
OK\r\n    ATD1234567
\r\n      \c
CONNECT   \c
'Callback login:'   call_back_ID
HANGUP OFF
ABORT "Bad Login"
'Callback Password:' Call_back_password
TIMEOUT 120
CONNECT \c
HANGUP ON
ABORT "NO CARRIER"
ogin:--BREAK--ogin: real_account
etc ...

TIMEOUT 超时

  • 初始超时值为45秒。可以使用-t参数来改变这一点。也可以指定“TIMEOUT 0”。

  • 要更改下一个预期字符串的超时值,可以使用以下示例:

ATZ OK ATDT5551212 CONNECT TIMEOUT 10 login:——login: TIMEOUT 5 password: hello2u2

  • 这将在期待login:提示时将超时更改为10秒。然后,当它寻找密码提示时,超时被更改为5秒。

  • 超时一旦更改,将一直有效,直到再次更改。

SENDING EOT 发送测试结束

​ EOT的特殊回复字符串表示chat程序向远程发送一个EOT字符。这通常是文件结束符序列。在EOT之后不发送返回字符。可以使用序列^D将EOT序列嵌入到发送字符串中。

GENERATING BREAK 产生破坏

​ BREAK的特殊回复字符串将导致发送中断条件。断路是发射机的一种特殊信号。接收端的正常处理是改变传输速率。它可以用于在远程上循环使用可用的传输速率,直到您能够收到有效的登录提示。中断序列可以使用\K序列嵌入到发送字符串中。

ESCAPE SEQUENCES 转义序列

​ 期望字符串和应答字符串可能包含转义序列。所有的序列在回复字符串中都是合法的。很多都是合法的。那些在期望序列中不有效的是这样指出的。

‘ ’

  • 期望或发送一个空字符串。如果你发送一个空字符串,它仍然会发送返回字符。这个序列可以是一对撇号字符或引号字符。

\b

  • 表示退格字符。

\c

  • 取消回复字符串末尾的换行符。这是发送没有尾随返回字符的字符串的唯一方法。它必须位于发送字符串的末尾。例如,序列hello\c将简单地发送字符h, e, l, l, o.(在expect中无效)。

\d

  • 延迟一秒钟。程序使用sleep(1),它将延迟到最多一秒。(预期无效。)

\K

  • 插入一个BREAK(在预期中无效)

\n

  • 发送换行符或换行符。

\N

  • 发送一个空字符。相同的序列可以用\0表示。(预期无效。)

\p

  • 暂停片刻。延迟是1/10秒。(预期无效。)

\q

  • 禁止将字符串写入SYSLOG文件。字符串?在其所在位置写入日志。(预期无效。)

\r

  • 发送或等待马车返回。

\s

  • 表示字符串中的空格字符。当不希望对包含空格的字符串进行引号引用时,可以使用此方法。序列’HI TIM’和HI\sTIM是相同的。

\t

  • 发送或期望一个制表符。

\T

  • 发送电话号码字符串指定的T选项(在预期中无效)。

\U

  • 发送电话号码2字符串指定的-U选项(在预期中无效)。

\\

  • 发送或期望一个反斜杠字符。

\ddd

  • 将八进制数字(ddd)折叠成一个ASCII字符并发送该字符。(某些字符在expect中无效。)

^C

  • 用C表示的控制字符替换序列,例如字符DC1(17)显示为^Q。(某些字符在expect中无效。)

ENVIRONMENT VARIABLES 环境变量

​ 如果在命令行中指定了-E选项,则在聊天脚本中可以使用环境变量。元字符$用于引入要替换的环境变量的名称。如果替换失败,因为未设置所请求的环境变量,则不会替换该变量的任何内容。


TERMINATION CODES 终止准则

chat程序将终止与以下完成代码。

  • 0 程序的正常终止。这表明脚本执行时没有错误,结果正常。

  • 1 一个或多个参数无效,或者预期字符串对于内部缓冲区太大。这表明程序没有正确执行。

  • 2 程序执行过程中出现错误。这可能是由于读写操作由于某些原因失败或聊天接收到信号,如SIGINT。

  • 3 当期望的字符串没有“-subsend”字符串时发生超时事件。这可能意味着您没有为条件正确编写脚本,或者发生了一些意外事件,无法找到预期的字符串。

  • 4 第一个被标记为中止条件的字符串出现。

  • 5 第二个被标记为中止条件的字符串出现。

  • 6 第三个被标记为中止条件的字符串出现。

  • 7 第四个被标记为中止条件的字符串出现。

…其他终止代码也是标记为终止条件的字符串。

使用终止代码,可以确定是哪个事件终止了脚本。可以判断是否从调制解调器接收到字符串“BUSY”而不是“NO DIAL TONE”。虽然可以重试第一个事件,但在重试期间,第二个事件成功的机会可能很小。


SEE ALSO 另请参阅

​ 关于chat脚本的其他信息可以在UUCP文档中找到。chat脚本取自uucico程序所使用的脚本。

​ uucp uucico (1) (1)

### 回答1: chat微信小程序源码是一种非常有用的工具,尤其是在当前社交化的时代,人们更加依赖于通过手机上的应用程序进行交流和沟通。chat微信小程序源码提供了一种轻量级的聊天工具,可以让用户在微信平台上随时随地地与其他用户进行聊天。 chat微信小程序源码的主要特点是它非常易于使用,同时还提供了许多强大的功能。用户可以使用微信账号进行登录,然后创建和加入聊天室,与其他用户即时通讯。 chat微信小程序源码还支持图片和语音消息,让用户能够更加方便地表达自己的思想和情感。 除了基本的聊天功能之外,chat微信小程序源码还提供了一些有趣的社交功能,例如用户可以创建自己的个人资料,与其他用户进行交流和互动。此外,chat微信小程序源码还支持多种语言,可以满足不同用户的需求。 总之,chat微信小程序源码是一款功能强大的轻量级聊天工具,为用户提供了非常方便的方式进行即时通讯和社交互动。无论是在个人还是企业使用中,chat微信小程序源码都能够满足用户的需求。 ### 回答2: Chat微信小程序源码是一款基于微信开发的聊天应用程序。它为用户提供了一个方便快捷的聊天平台,加入指定的聊天室即可与其他人进行聊天。Chat微信小程序源码简单易懂,操作简便,用户可使用微信登录进行注册并选择加入相应的聊天室,即可与其他成员进行即时聊天。 Chat微信小程序源码的主要功能包括聊天、消息推送、聊天室管理、个人账号管理等。聊天功能包括文字、表情、图片、语音等多种聊天形式,用户可根据自己的需求选择不同的聊天形式。聊天室管理功能包括聊天室的创建、加入、退出、编辑等,用户可根据自己的需要进行选择和设置。个人账号管理包括用户资料修改、密码修改、退出等。 此外,Chat微信小程序源码还具有良好的用户体验和简洁的操作界面,能够帮助用户快速上手,更方便地使用聊天功能。无论是日常生活中的聊天,还是工作或学习中的聊天,都可以在Chat微信小程序源码中得到方便的解决。 总之,Chat微信小程序源码是一款优秀的聊天应用程序,为用户提供了方便快捷的聊天平台,帮助用户更好地完成日常生活和工作学习中所需的聊天功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值