/etc/uucp/Systems 文件包含 uucico 守护进程与远程计算机建立通信链路所需的信息。/etc/uucp/Systems 是配置 UUCP 时需要编辑的第一个文件。
Systems 文件中的每个项都代表一台与您的主机进行通信的远程计算机。某台特定主机可以对应多个项。附加的项代表按顺序尝试的备用通信路径。此外,缺省情况下 UUCP 阻止 /etc/uucp/Systems 中未包含的任何计算机登录您的主机。
可以使用 Sysfiles 文件定义多个要用作 Systems 文件的文件。有关 Sysfiles 的说明,请参见UUCP /etc/uucp/Sysfiles 文件。
System-Name Time Type Speed Phone Chat Script |
Arabian Any ACUEC 38400 111222 ogin: Puucp ssword:beledi |
对应系统名称字段的项。有关更多信息,请参见/etc/uucp/Systems 文件中的系统名称字段。
对应时间字段的项。有关更多信息,请参见/etc/uucp/Systems 文件中的时间字段。
对应类型字段的项。有关更多信息,请参见/etc/uucp/Systems 文件中的类型字段。
对应速度字段的项。有关更多信息,请参见/etc/uucp/Systems 文件中的速度字段。
对应电话字段的项。有关更多信息,请参见/etc/uucp/Systems 文件中的电话字段。
对应聊天脚本字段的项。有关更多信息,请参见/etc/uucp/Systems 文件中的聊天脚本字段。
此字段包含远程计算机的节点名。在 TCP/IP 网络上,此名称可以是计算机的主机名,也可以是特别通过 /etc/uucp/Sysname 文件为 UUCP 通信创建的名称。请参见UUCP /etc/uucp/Systems 文件。在示例 26–1 中,系统名称字段包含代表远程主机 Arabian 的项。
此字段指定可呼叫远程计算机的周日期和时间。时间字段的格式如下:
daytime[;retry]
对应于各个周日期。
对应于任意工作日。
对应于任意一天。
您的主机永远不会启动对远程计算机的呼叫。呼叫必须由远程计算机启动。随后,您的主机工作在被动模式下。
示例 26–1 中的时间字段为 Any,它指示可以随时呼叫主机 Arabian。
time 部分应该是以 24 小时表示法指定的时间范围,例如 0800-1230 表示从 8:30 a.m. 到 12:30 p.m.。如果未指定 time 部分,则假设允许在一天的任何时间执行呼叫。
允许跨 0000 的时间范围。例如,0800-0600 表示允许在 6 a.m. 到 8 a.m. 之外的任何时间执行呼叫。
可以在 retry 子字段中指定尝试失败后重试之前的最短时间(以分钟为单位)。缺省等待时间为 60 分钟。该子字段分隔符为分号 (;)。例如,Any;9 解释为可随时执行呼叫,但出现故障后至少要等待 9 分钟才可重试。
如果未指定 retry 项,则会使用指数补偿算法。这意味着 UUCP 将以缺省等待时间开始,并且该等待时间会随失败尝试次数的增加而不断增加。例如,假设初始重试时间为 5 分钟。如果没有任何响应,则下一次重试将在 10 分钟后进行。接下来的重试将在 20 分钟后进行,依此类推直至达到最长重试时间 23 小时为止。如果指定了 retry,则指定的值始终为重试时间。否则,将使用补偿算法。
此字段包含与远程计算机建立通信链路所应使用的设备类型。此字段中使用的关键字应与 Devices 文件项的第一个字段匹配。
Arabian Any ACUEC, g 38400 1112222 ogin: Puucp ssword:beledi |
通过在类型字段中添加协议,可以定义与系统联系时采用的协议。上例显示如何将协议 g 附加到设备类型 ACUEC 中。有关协议的信息,请参见/etc/uucp/Devices 文件中的协议定义。
此字段(也称为类字段)指定建立通信链路时所使用设备的传输速度。UUCP 速度字段可以包含字母和速度(如 C1200 或 D1200)以区分拨号器的类。请参阅/etc/uucp/Devices 文件中的类字段。
某些设备可以在任何速度下使用,因此可以使用关键字 Any。此字段必须与关联的 Devices 文件项中的类字段匹配。
eagle Any ACU, g D1200 NY3251 ogin: nuucp ssword:Oakgrass |
如果不需要为此字段指定信息,请使用短横线 (-) 作为此字段的占位符。
使用此字段,可以指定供自动拨号装置(称为端口选定器)使用的远程计算机的电话号码(称为令牌)。电话号码包含可选的字母缩写和数字部分。如果使用缩写,则必须在 Dialcodes 文件中列出缩写。
nubian Any ACU 2400 NY555-1212 ogin: Puucp ssword:Passuan eagle Any ACU, g D1200 NY=3251 ogin: nuucp ssword:Oakgrass |
在电话字段中,等号 (=) 指示 ACU 等待二次拨号音响起后再拨打其余的数字。字符串中的短横线 (-) 指示 ACU 暂停四秒后再拨打下一个数字。
如果您的计算机与端口选定器相连,您便可以访问与该选定器连接的其他计算机。这些远程计算机的 Systems 文件项不应在电话字段中包含电话号码。此字段应包含将传递给交换机的令牌。这样,端口选定器即可了解主机要与其进行通信的远程计算机,通常只需了解系统名称。关联的 Devices 文件项的结尾应该有 \D,从而确保不使用 Dialcodes 文件来转换此字段。
此字段(也称为登录字段)包含称为聊天脚本的字符串。聊天脚本包含本地和远程计算机必须在其初始会话中传递给对方的字符。聊天脚本具有以下格式:
expect send [expect send] ....
expect 表示本地主机为启动会话而期待从远程主机接收的字符串。send 是本地主机在从远程主机接收 expect 字符串后发送的字符串。聊天脚本可以具有多个 expect-send(期待发送)序列。
本地主机期待从远程计算机接收的登录提示
本地主机为进行登录而向远程计算机发送的登录名
本地主机期待从远程计算机接收的口令提示
本地主机向远程计算机发送的口令
expect[-send-expect]...
如果未成功读取前一个 expect,则会发送 -send。-send 后的 -expect 是下一个期待字符串。
例如,如果字符串为 login-login,则本地主机上的 UUCP 将期待 login。如果 UUCP 从远程计算机接收到 login,则 UUCP 将转至下一个字段。如果 UUCP 未收到 login,UUCP 将发送回车,然后再次查找 login。如果本地计算机最初不期待任何字符,请在 expect 字段中使用字符 ""(代表 NULL 字符串)。除非 send 字符串以 \c 结束,否则所有 send 字段发送时都将附加一个回车。
以下是使用 expect-send 字符串的 Systems 文件项的示例:
sonora Any ACUEC 9600 2223333 "" \r \r ogin:-BREAK-ogin: Puucpx ssword:xyzzy |
本示例指示本地主机上的 UUCP 发送两个回车并等待 ogin:(对应于 Login:)。如果未收到 ogin:,则发送 BREAK。收到 ogin: 时,将发送登录名 Puucpx。收到 ssword:(对应于 Password:)时,将发送口令 xyzzy。
表 26–1 Systems 文件的聊天脚本字段中使用的转义符
转义符 |
含义 |
---|---|
\b |
发送或期待退格字符。 |
\c |
如果位于字符串结尾,则取消通常发送的回车。否则应忽略。 |
\d |
延迟 1 至 3 秒,然后再发送更多字符。 |
\E |
启动回显检查。从此刻开始,无论何时传输字符,UUCP 都会等待接收到字符后才继续执行检查。 |
\e |
取消回显检查。 |
\H |
忽略某一挂起。对回拨调制解调器使用此选项。 |
\K |
发送 BREAK 字符。 |
\M |
启用 CLOCAL 标志。 |
\m |
禁用 CLOCAL 标志。 |
\n |
发送或期待换行符。 |
\N |
发送 NULL 字符 (ASCII NUL)。 |
\p |
暂停大约 1/4 至 1/2 秒。 |
\r |
发送或期待回车。 |
\s |
发送或期待空格字符。 |
\t |
发送或期待制表符。 |
EOT |
发送 EOT,随后带有两次换行。 |
BREAK |
发送 BREAK 字符。 |
\ddd |
发送或期待八进制数字 (ddd) 表示的字符。 |
某些公司设置了拨入服务器以处理来自远程计算机的呼叫。例如,您的公司可能已具有配备了回拨调制解调器的拨入服务器,员工可以从其家用计算机对该服务器进行呼叫。拨入服务器识别远程计算机后,便会断开与远程计算机的链路,然后再回叫远程计算机。随后将重新建立通信链路。
在 Systems 文件聊天脚本中应进行回拨的位置使用 \H 选项可以简化回拨。在希望拨入服务器挂起的位置包含 \H(作为期待字符串的一部分)。
例如,假设呼叫拨入服务器的聊天脚本包含以下字符串:
INITIATED\Hogin: |
本地计算机上的 UUCP 拨号设备期待从拨入服务器接收字符 INITIATED。与字符 INITIATED 匹配后,拨号设备就会刷新它所接收的所有后续字符,直到拨入服务器挂起为止。随后,本地拨号设备将等待,直到从拨入服务器接收到期待字符串的下一部分(即字符 ogin:)为止。接收到 ogin: 后,拨号设备随后会继续处理聊天脚本。
字符串不需要直接放在 \H 之前或之后,如前面的样例字符串所示。
也可以使用伪发送 STTY=value 字符串设置调制解调器特性。例如,STTY=crtscts 可启用硬件流控制。STTY 接受所有的 stty 模式。有关完整的详细信息,请参见 stty(1) 和 termio(7I) 手册页。
以下示例在 Systems 文件项中启用了硬件流控制:
unix Any ACU 2400 12015551212 "" \r ogin: Puucp ssword:Passuan "" \ STTY=crtscts |
在某些情况下,由于您正在呼叫的系统会检查端口奇偶校验并删除错误的行,因此您必须重置奇偶校验。 expect-send(期待发送)对句 "" P_ZERO 将高序位(奇偶校验位)设置为 0。请参见以下示例中的期待发送对句:
unix Any ACU 2400 12015551212 "" P_ZERO "" \r ogin: Puucp ssword:Passuan |
以下是可跟在 expect-send(期待发送)对句 "" P_ZERO 后的奇偶校验对句:
将奇偶校验设置为偶校验(缺省值)
将奇偶校验设置为奇校验
将奇偶校验位设置为 1
可以将这些奇偶校验对句插入聊天脚本中的任何位置。奇偶校验对句适用于 expect-send(期待发送)对句 "" P_ZERO 后的聊天脚本中的所有信息。奇偶校验对句还可以用在 Dialers 文件的项中。以下示例包括奇偶校验对句 "" P_ONE:
unix Any ACU 2400 12015551212 "" P_ZERO "" P_ONE "" \r ogin: Puucp ssword:Passuan |