16.2. UUCP 配置文件

与更简单的文件传输程序相比,UUCP的设计目的是能够自动处理所有传输。一旦正确设置,管理员就不需要在日常工作中进行干预。自动传输所需的信息保存在几个配置文件中,这些文件位于/usr/lib/uucp目录中。 这些文件中的大多数仅在拨出时使用。

16.2.1. Taylor UUCP 简介

说UUCP配置很困难是轻描淡写。 这确实是一个棘手的问题,并且配置文件的有时简短的格式并没有使事情变得容易(尽管与HDB或Version 2中的较旧格式相比,Taylor格式几乎易于阅读)。

为了让您了解所有配置文件如何交互,我们将向您介绍最重要的文件,并查看这些文件中的示例条目。 我们现在不会详细解释所有内容; 在随后的单独章节中给出了更准确的说明。 如果您想设置您的机器以进行UUCP,最好从一些示例文件开始并逐步调整它们。 您可以选择下面显示的那些,也可以选择您喜欢的Linux发行版中包含的那些。

本节中描述的所有文件都保存在/etc/uucp或其子目录中。 某些Linux发行版包含启用了HDB和Taylor配置支持的UUCP二进制文件,并为每个配置文件集使用不同的子目录。 通常会有一个README文件在/usr/lib/uucp.

为了使UUCP正常工作,这些文件必须属于 uucp 用户。 其中一些文件包含密码和电话号码,因此应具有600权限。请注意,尽管大多数UUCP命令必须设置uid为 uucp,但您必须确保 uuchk 程序不是。 否则,即使文件具有模式600,用户也能够显示系统密码。

中央 UUCP 配置文件是/etc/uucp/config,用于设置常规参数。 其中最重要的是(现在也是唯一一个)您主机的UUCP名称。 在 Virtual Brewery,他们使用 vstout 作为他们的 UUCP 网关

# /etc/uucp/config - UUCP main configuration file
nodename         vstout

sys文件是下一个重要的配置文件。 它包含与您链接的站点的所有特定于系统的信息。 这包括站点的名称以及链接本身的信息,例如使用调制解调器链接时的电话号码。 名为 pablo 的调制解调器连接站点的典型条目如下所示

# /usr/lib/uucp/sys - name UUCP neighbors
# system: pablo
system          pablo
time            Any
phone           555-22112
port            serial1
speed           38400
chat            ogin: vstout ssword: lorca

time 指定可以调用远程系统的时间。 chat 描述了登录聊天脚本,即必须交换的字符串序列,以允许 uucico 登录到 pablo。 我们稍后会回到聊天脚本。 port 关键字仅命名port文件中的条目。(请参阅 图16-1。)您可以分配您喜欢的任何名称,只要它引用port.

port文件中的有效条目即可。文件保存特定于链接本身的信息。 对于调制解调器链接,它描述了要使用的设备专用文件,支持的速度范围以及连接到端口的拨号设备类型。 以下条目描述/dev/ttyS1(又名 COM 2),管理员已将能够以高达 38,400 bps 的速度运行的 NakWell 调制解调器连接到该端口。 端口的名称选择为与sys文件中的端口名称匹配

# /etc/uucp/port - UUCP ports
# /dev/ttyS1 (COM2)
port            serial1
type            modem
device          /dev/ttyS1
speed           38400
dialer          nakwell

有关拨号器的信息保存在另一个名为——您猜对了——dial的文件中。 对于每种拨号器类型,它基本上都包含拨打远程站点时发出的命令序列,给定电话号码。 同样,这是指定为聊天脚本。 例如,NakWell 的条目可能如下所示

# /etc/uucp/dial - per-dialer information
# NakWell modems
dialer          nakwell
chat            "" AT&F OK ATDT\T CONNECT

chat 开头的行指定了调制解调器聊天,这是发送到调制解调器并从调制解调器接收的命令序列,以初始化调制解调器并使其拨打所需的号码。 \T 序列将被 uucico 替换为电话号码。

为了让您大致了解 uucico 如何处理这些配置文件,假设您发出以下命令
$ uucico -s pablo

uucico 所做的第一件事是在sys文件中查找 pablo。从sys文件中 pablo 的条目中,它看到它应该使用 serial1 端口来建立连接。port文件告诉 uucico 这是一个调制解调器端口,并且它连接了一个 NakWell 调制解调器。

uucico 现在搜索dial以查找描述 NakWell 调制解调器的条目,并且找到一个后,打开串口/dev/cua1并执行拨号器聊天。 也就是说,它发送 AT&F,等待 OK 响应,等等。 当遇到字符串 \T 时,它会替换从sys文件中提取的电话号码 (555-22112)。

在调制解调器返回 CONNECT 之后,连接已建立,并且调制解调器聊天已完成。 uucico 现在返回到sys文件并执行登录聊天。 在我们的示例中,它将等待 login: 提示,然后发送其用户名(vstout),等待 password: 提示,然后发送其密码(lorca)。

完成授权后,假定远程端启动其自己的 uucico。 然后,两者进入上一节中描述的握手阶段。

图16-1 说明了配置文件之间的依赖关系。

图 16-1. Taylor UUCP 配置文件交互

16.2.2. UUCP 需要了解什么

在开始编写 UUCP 配置文件之前,您必须收集 UUCP 需要的一些信息。

首先,您必须弄清楚您的调制解调器连接到哪个串行设备。 通常,(DOS) 端口 COM1: 到 COM4: 映射到设备专用文件/dev/ttyS0/dev/ttyS3。 某些发行版(例如 Slackware)创建一个名为/dev/modem到相应的ttyS*设备文件的链接,并配置 kermitseyon 和任何其他通信程序来使用此通用文件。 在这种情况下,您也应该在 UUCP 配置中使用/dev/modem

使用符号链接的原因是,所有拨出程序都使用所谓的锁定文件来指示何时正在使用串行端口。 这些锁定文件的名称是字符串LCK..和设备文件名(例如LCK..ttyS1)的串联。 如果程序对同一设备使用不同的名称,它们将无法识别彼此的锁定文件。 结果,当同时启动它们时,它们会中断彼此的会话。 当您使用crontab条目安排 UUCP 调用时,这很有可能。 有关串行端口设置的详细信息,请参阅 第 4 章

接下来,您必须弄清楚您的调制解调器和 Linux 将以什么速度进行通信。 您必须将此速度设置为您期望获得的最高有效传输速率。 有效传输速率可能远高于您的调制解调器能够实现的原始物理传输速率。 例如,许多调制解调器以 56 kbps 的速度发送和接收数据。 使用诸如 V.42bis 之类的压缩协议,实际传输速率可能会超过 100 kbps。

当然,如果 UUCP 要做任何事情,您需要要调用的系统的电话号码。 此外,您需要一个有效的登录 ID,并且可能需要远程计算机的密码。[1]

您还必须确切地知道如何登录系统。 您是否必须在出现登录提示之前按 Enter 键? 它是否显示loginuser? 这是组成聊天脚本所必需的。 如果您不知道,或者如果通常的聊天脚本失败,请尝试使用诸如 kermitminicom 之类的终端程序来调用系统,并准确记录您必须做的事情。

16.2.3. 站点命名

与基于 TCP/IP 的网络一样,您的主机必须具有 UUCP 网络的名称。 只要您只想使用 UUCP 进行与您直接拨号或在本地网络上的站点之间的文件传输,此名称就不必满足任何标准。[2]

但是,如果您使用 UUCP 进行邮件或新闻链接,则应考虑在 UUCP 映射项目中注册该名称。[3] 第 17 章介绍了 UUCP 映射项目。 即使您参与一个域,您也可以考虑为您的站点设置一个官方 UUCP 名称。

通常,人们选择其 UUCP 名称以匹配其完全限定域名中的第一个组成部分。 假设您站点的域地址是 swim.twobirds.com; 那么您的 UUCP 主机名将是 swim。 将 UUCP 站点视为彼此熟悉,就像直呼其名一样。 当然,您也可以使用与您的完全限定域名完全无关的 UUCP 名称。

但是,除非您已将其注册为您的官方 UUCP 名称,否则请确保不要在邮件地址中使用未限定的站点名称。 充其量,发送到未注册的 UUCP 主机的邮件将在某个大黑位桶中消失。 如果您使用其他站点已经拥有的名称,则该邮件将被路由到该站点,并给其邮局管理员带来很多麻烦。

默认情况下,UUCP 套件使用 hostname 设置的名称作为站点的 UUCP 名称。 该名称通常由启动时rc脚本上的命令设置,并且通常存储在/etc/hostname中。 如果您的 UUCP 名称与您设置的主机名不同,则必须使用 hostname 选项在config文件中告诉 uucico 您的 UUCP 名称。 接下来将对此进行介绍。

16.2.4. Taylor 配置文件

现在我们回到配置文件。 Taylor UUCP 从以下文件获取其信息

config

这是主要的配置文件。 您可以在此处定义站点的 UUCP 名称。

sys

此文件描述了所有已知的站点。 对于每个站点,它指定其名称、何时调用它、要拨打的号码(如果有)、要使用的设备类型以及如何登录。

port

此文件包含描述每个可用端口的条目,以及支持的线路速度和要使用的拨号器。

dial

此文件描述了用于建立电话连接的拨号器。

dialcode

此文件包含符号拨号代码的扩展。

call

此文件包含调用系统时要使用的登录名和密码。 很少使用。

passwd

此文件包含系统登录时可能使用的登录名和密码。 仅当 uucico 执行自己的密码检查时才使用它。

Taylor 配置文件通常由包含关键字-值对的行组成。井号 (#) 表示注释,注释一直延伸到行尾。如果要使用井号本身,请使用反斜杠进行转义,如下所示:\#.

您可以使用这些配置文件调整大量的选项。我们无法详细介绍所有参数,但我们将在这里介绍最重要的参数。然后,您应该能够配置基于调制解调器的 UUCP 链接。其他章节介绍了如果要通过 TCP/IP 或直接串行线使用 UUCP 所需的修改。完整的参考资料在 Taylor UUCP 源代码附带的 Texinfo 文档中。

当您认为已完全配置了 UUCP 系统时,可以使用 uuchk 工具(位于/usr/lib/uucp)检查您的配置。uuchk 读取您的配置文件,并为每个系统打印出所使用的配置值的详细报告。

16.2.5. 使用 config 文件进行通用配置选项

通常,您不会使用此文件来描述除 UUCP 主机名之外的太多内容。默认情况下,UUCP 将使用您使用 hostname 命令设置的名称,但通常最好显式设置 UUCP 名称。这是一个示例config文件中的端口名称匹配
# /usr/lib/uucp/config - UUCP main configuration file
hostname        vstout

许多其他参数也可以在此处设置,例如 spool 目录的名称或匿名 UUCP 的访问权限。后者将在本章后面的“匿名 UUCP”部分中进行描述。

16.2.6. 如何使用 sys 文件告诉 UUCP 关于其他系统的信息

sys文件描述了您的机器知道的系统。system 关键字引入一个条目;随后的行直到下一个 system 指令,详细说明了特定于该站点的参数。通常,系统条目定义了诸如电话号码和登录会话之类的参数。

第一个 system 行之前的参数设置了用于所有系统的默认值。通常,您可以在默认设置部分设置协议参数等。

最重要的字段将在以下各节中详细讨论。

16.2.6.1. 系统名称

system 命令命名远程系统。您必须指定远程系统的正确名称,而不是您发明的别名,因为当您登录时,uucico 会根据远程系统声明的名称进行检查。[4]

每个系统名称只能出现一次。如果您想为同一系统使用多个配置集(例如,uucico 应依次尝试的不同电话号码),您可以指定 alternates(备用配置),我们将在基本配置选项之后进行描述。

16.2.6.2. 电话号码

如果需要通过电话线访问远程系统,则 phone 字段指定调制解调器应拨打的号码。它可能包含 uucico 的拨号程序解释的多个令牌。等号 (=) 表示等待二次拨号音,破折号 (-) 表示暂停一秒钟。如果您在拨打特殊访问代码和电话号码之间不暂停,某些电话装置会阻塞。[5]

通常使用名称而不是数字来描述区域拨号代码是很方便的。dialcode文件允许您将名称与代码关联,您随后可以在指定远程主机的电话号码时使用该代码。假设你有以下内容dialcode文件中的端口名称匹配

# /usr/lib/uucp/dialcode - dialcode translation
Bogoham         024881
Coxton          035119

通过这些转换,您可以在sys文件中使用诸如 Bogoham7732 之类的电话号码,这可能会使事情更清晰,并且如果 Bogoham 的拨号代码发生变化,也更容易更新。

16.2.6.3. 端口和速度

portspeed 选项用于选择用于呼叫远程系统的设备以及应设置设备的最大速度。[6] system 条目可以单独使用其中一个选项,也可以同时使用这两个选项。在查找合适的设备时port文件中,仅选择具有匹配的端口名称和/或速度范围的端口。

通常,仅使用 speed 选项就足够了。如果您只有一个串行设备在port中定义,uucico 总是会选择正确的设备,因此您只需要提供所需的速度即可。如果您的系统连接了多个调制解调器,您仍然通常不想命名特定的端口,因为如果 uucico 发现有多个匹配项,它会依次尝试每个设备,直到找到未使用的设备。

16.2.6.4. 登录会话

我们已经遇到了登录会话脚本,它告诉 uucico 如何登录到远程系统。它由一个令牌列表组成,这些令牌指定了本地 uucico 进程期望和发送的字符串。uucico 等待直到远程机器发送登录提示符,然后返回登录名,等待远程系统发送密码提示符,然后发送密码。期望和发送字符串在脚本中交替出现。uucico 会自动将回车符 (\r) 附加到任何发送字符串。因此,一个简单的会话脚本如下所示:
 ogin: vstout ssword: catch22

您可能会注意到,期望字段不包含完整的提示符。这确保了登录成功,即使远程系统传输的是 Login: 而不是 login:。如果您期望或发送的字符串包含空格或其他空白字符,则必须使用引号将文本括起来。

uucico 还允许某种形式的条件执行。假设远程机器的 getty 在发送提示符之前需要重置。为此,您可以将子会话附加到期望字符串,用破折号分隔。仅当主期望失败时(即发生超时)才执行子会话。使用此功能的一种方法是,如果远程站点不显示登录提示符,则发送 BREAK。以下示例提供了一个通用会话脚本,如果必须在登录出现之前按 Enter 键,该脚本也应该有效。第一个空参数,"",告诉 UUCP 不要等待任何事情,而是继续执行下一个发送字符串
 "" \n\r\d\r\n\c ogin:-BREAK-ogin: vstout ssword: catch22

在会话脚本中可能会出现几个特殊字符串和转义字符。以下是 expect 字符串中合法字符的部分列表:

""

空字符串。它告诉 uucico 不要等待任何事情,而是立即继续执行下一个发送字符串。

\t

制表符。

\r

回车符。

\s

空格字符。您需要它才能在会话字符串中嵌入空格。

\n

换行符。

\\

反斜杠字符。

在发送字符串中,除了上述字符之外,以下转义字符和字符串也是合法的:

EOT

传输结束字符 (^D)。

BREAK

中断字符。

\c

禁止在字符串末尾发送回车符。

\d

延迟发送 1 秒。

\E

启用回显检查。这需要 uucico 等待从设备读取回其写入的所有内容的回显,然后才能继续会话。它主要在调制解调器会话中使用(我们将在后面遇到)。默认情况下,回显检查处于关闭状态。

\e

禁用回显检查。

\K

BREAK 相同。

\p

暂停一小部分秒。

16.2.6.5. 备用配置

有时,您想为单个系统使用多个条目,例如,如果可以通过不同的调制解调器线路访问该系统。使用 Taylor UUCP,您可以通过定义所谓的 alternate (备用配置)来执行此操作。

备用条目保留主系统条目的所有设置,并且仅指定应在默认系统条目中覆盖或添加到默认系统条目的那些值。备用配置通过包含关键字 alternate 的行从系统条目偏移。

要为 pablo 使用两个电话号码,您可以按以下方式修改其sys条目
system       pablo
phone        123-456
.. entries as above ...
alternate
phone        123-455

当调用 pablo 时,uucico 将首先拨打 123-456,如果失败,它将尝试备用配置。备用条目保留主系统条目的所有设置,并且仅覆盖电话号码。

16.2.6.6. 限制呼叫时间

Taylor UUCP 提供了多种方法来限制呼叫远程系统的时间。您可能会这样做,要么是因为远程主机对其在工作时间内的服务施加了限制,要么只是为了避免高费率的呼叫时间。请注意,始终可以通过给 uucico 提供–S–f选项来覆盖呼叫时间限制。

默认情况下,Taylor UUCP 在任何时候都禁止连接,因此您必须sys文件中使用某种时间规范。如果您不关心呼叫时间限制,则可以在您的sys文件中提取的电话号码 (555-22112)。

文件中使用值为 Anytime 选项。限制呼叫时间的最简单方法是包括一个 time 条目,后跟一个由日期和时间子字段组成的字符串。日期可以是 Mo, Tu, We, Th, Fr, Sa,Su 的任意组合。您也可以指定 AnyNeverWk 表示工作日。时间由两个 24 小时时钟值组成,以破折号分隔。它们指定了可以拨打电话的时间范围。这些令牌的组合写入时没有空格。任意数量的日期和时间规范可以用逗号分组在一起,如该行所示:
time            MoWe0300-0730,Fr1805-2200

此示例允许在周一和周三凌晨 3:00 至上午 7:30 之间,以及在周五下午 6:05 至晚上 10:00 之间进行呼叫。如果时间字段跨越午夜,比如 Mo1830-0600,它实际上意味着周一,午夜到凌晨 6:00 之间以及晚上 6:30 到午夜之间。

特殊的时间字符串 AnyNever 表示它们的字面含义:分别可以在任何时间或任何时间都不可以进行呼叫。

Taylor UUCP 还有许多可以在时间字符串中使用的特殊令牌,例如 NonPeakNight。这些特殊令牌分别是 Any2300-0800,SaSu0800-1700Any1800-0700,SaSu 的简写。

time 命令接受一个可选的第二个参数,用于描述重试时间(分钟)。当建立连接的尝试失败时,uucico 不允许在一定的时间间隔内再次拨打远程主机。例如,如果您指定重试时间为 5 分钟,则 uucico 将拒绝在上次失败后的 5 分钟内呼叫远程系统。默认情况下,uucico 使用指数退避方案,其中重试间隔随着每次重复失败而增加。

timegrade 命令允许您将最大假脱机等级附加到计划中。例如,假设您在 system 条目中具有以下 timegrade 命令
timegrade           N Wk1900-0700,SaSu 
timegrade           C Any

这允许假脱机等级为 C 或更高的作业(通常邮件以等级 B 或 C 排队)在建立呼叫时进行传输,而新闻(通常以等级 N 排队)仅在夜间和周末传输。

time 一样,timegrade 命令采用重试间隔(分钟)作为可选的第三个参数。

但是,这里需要注意有关假脱机等级的问题。首先,timegrade 选项仅适用于 您的 系统发送的内容;远程系统仍然可以传输它喜欢的任何内容。您可以使用 call-timegrade 选项显式请求它仅发送高于给定假脱机等级的作业;但不能保证它会遵守此请求。[7]

类似地,timegrade字段在远程系统呼入时不会被检查,因此将发送为呼叫系统排队的任何作业。但是,远程系统可以显式请求您的 uucico 将自身限制为特定的假脱机等级。

16.2.7. 通过 port 文件识别可用设备

port文件告诉 uucico 关于可用的端口。这些通常是调制解调器端口,但也支持其他类型,例如直接串行线路和 TCP 套接字。

sys文件一样,port由以关键字 port 开头的单独条目组成,后跟端口名称。该名称可以用在sys文件的 port 语句中。该名称不必是唯一的;如果存在多个具有相同名称的端口,uucico 将依次尝试每个端口,直到找到一个当前未被使用的端口。

port 命令应立即后跟 type 语句,该语句指示所描述端口的类型。有效类型为 modem(用于调制解调器)、direct(用于直接连接)和 tcp(用于 TCP 套接字)。如果缺少 port 命令,则端口类型默认为调制解调器。

在本节中,我们仅介绍调制解调器端口;TCP 端口和直接线路将在后面的章节中讨论。

对于调制解调器和直接端口,您必须使用 device 指令指定用于呼出的设备。通常,这是 /dev 目录中的设备特殊文件的名称,如/dev目录下的设备。/dev/ttyS1.

对于调制解调器设备,端口条目还确定连接到端口的调制解调器的类型。不同类型的调制解调器必须以不同的方式进行配置。即使声称与 Hayes 兼容的调制解调器也并不总是真正彼此兼容。因此,您必须告诉 uucico 如何初始化调制解调器并使其拨打所需的号码。Taylor UUCP 将所有拨号器的描述保存在名为dial的文件中。要使用其中的任何一个,您必须使用 dialer 命令指定拨号器的名称。

有时,您可能希望以不同的方式使用调制解调器,具体取决于您呼叫的系统。例如,一些较旧的调制解调器不理解高速调制解调器尝试以 56 kbps 连接时;它们只是断开线路,而不是协商以 9,600 bps 进行连接。当您知道站点 drop 使用这种“傻”调制解调器时,您必须在呼叫它们时以不同的方式设置您的调制解调器。为此,您需要在port文件中添加一个额外的端口条目,该条目指定不同的拨号器。现在您可以为新端口指定一个不同的名称,例如 serial1-slow,并在sys.

中的 drop 系统条目中使用 port 指令。更好的区分端口的方法是根据它们支持的速度。例如,上述情况的两个端口条目可能如下所示
# NakWell modem; connect at high speed
port            serial1         # port name
type            modem           # modem port
device          /dev/ttyS1      # this is COM2
speed           115200          # supported speed
dialer          nakwell         # normal dialer
# NakWell modem; connect at low speed
port            serial1         # port name
type            modem           # modem port
device          /dev/ttyS1      # this is COM2
speed           9600            # supported speed
dialer          nakwell-slow    # don't attempt fast connect

站点 drop 的系统条目现在会将 serial1 作为端口名称给出,但请求仅以 9,600 bps 使用它。uucico 然后自动使用第二个端口条目。系统条目中速度为 115,200 bps 的所有剩余站点将使用第一个端口条目进行呼叫。默认情况下,将使用具有匹配速度的第一个条目。

16.2.8. 如何使用 dial 文件拨号

dial文件描述了各种拨号器的使用方式。传统上,UUCP 谈论的是拨号器而不是调制解调器,因为在早期,通常的做法是让一个(昂贵的)自动拨号设备服务于一整排调制解调器。如今,大多数调制解调器都内置了拨号支持,因此这种区别变得有些模糊。

尽管如此,不同的拨号器或调制解调器可能需要不同的配置。您可以在dial文件中描述它们。文件中的条目dial以给出拨号器名称的 dialer 命令开头。

除了 dialer 之外,最重要的条目是由 chat 命令指定的调制解调器聊天。与登录聊天类似,它由 uucico 发送到拨号器的一系列字符串以及它期望返回的响应组成。它通常用于将调制解调器重置为某种已知状态并拨打电话号码。以下示例 dialer 条目显示了 Hayes 兼容调制解调器的典型调制解调器聊天

# NakWell modem; connect at high speed
dialer          nakwell         # dialer name
chat            "" AT&F OK\r ATH1E0Q0 OK\r ATDT\T CONNECT
chat-fail       BUSY
chat-fail       ERROR
chat-fail       NO\sCARRIER
dtr-toggle      true

调制解调器聊天以"",即空预期字符串开始。因此,uucico 立即发送第一个命令 AT&FAT&F 是将调制解调器重置为出厂默认配置的 Hayes 命令。uucico 然后等待,直到调制解调器发送OK并发送下一个命令,该命令关闭本地回显等。在调制解调器返回OK之后,uucico 发送拨号命令 ATDT。字符串中的转义序列\T会被从系统条目sys文件中获取的电话号码替换。uucico 然后等待调制解调器返回字符串CONNECT,这表明已成功建立与远程调制解调器的连接。

有时,调制解调器无法连接到远程系统;例如,如果另一个系统正在与其他人通话,并且线路繁忙。在这种情况下,调制解调器会返回一条错误消息,指示原因。调制解调器聊天无法检测到此类消息;uucico 继续等待预期的字符串,直到超时。因此,UUCP 日志文件仅显示一个平淡的“在聊天脚本中超时”,而不是具体原因。

但是,Taylor UUCP 允许您使用如上所示的 chat-fail 命令告诉 uucico 关于这些错误消息。当 uucico 在执行调制解调器聊天时检测到 chat-fail 字符串时,它会中止呼叫并将错误消息记录在 UUCP 日志文件中。

上面显示的示例中的最后一个命令告诉 UUCP 在启动调制解调器聊天之前切换数据终端就绪 (DTR) 控制线。通常,串行驱动程序会在进程打开设备以告知连接的调制解调器有人想要与它通话时升高 DTR。dtr-toggle 功能然后降低 DTR,等待片刻,然后再次升高它。许多调制解调器可以配置为通过挂断、进入命令状态或重置自身来对 DTR 的降低做出反应。[8]

16.2.9. 通过 TCP 使用 UUCP

听起来可能很荒谬,但使用 UUCP 通过 TCP 传输数据并不是一个坏主意,尤其是在传输大量数据(例如 Usenet 新闻)时。在基于 TCP 的链接上,新闻通常使用 NNTP 协议进行交换,通过该协议单独请求和发送文章,而无需压缩或任何其他优化。虽然对于具有多个并发新闻源的大型站点来说足够了,但这种技术对于通过相对较慢的连接(例如 ISDN)接收新闻的小型站点来说非常不利。这些站点通常希望将 TCP 的优势与以大批量发送新闻的优势结合起来,这些新闻可以被压缩,从而以非常低的开销进行传输。传输这些批次的常见方式是使用通过 TCP 的 UUCP。

sys中,您可以指定一个通过 TCP 调用的系统,如下所示
system          gmu
address         news.groucho.edu
time            Any
port            tcp-conn
chat            ogin: vstout word: clouseau

address 命令给出主机的 IP 地址或其完全限定域名。相应的port条目应读作
port            tcp-conn
type            tcp
service         540

该条目声明当sys条目引用 tcp-conn 时,应使用 TCP 连接,并且 uucico 应尝试连接到远程主机上的 TCP 网络端口 540。这是 UUCP 服务的默认端口号。您也可以将符号端口名称提供给 service 命令,而不是端口号。与此名称对应的端口号将在/etc/services中查找。UUCP 服务的常用名称是 uucpd

16.2.10. 使用直接连接

假设您使用直接线路将系统 vstout 连接到 tiny。与调制解调器的情况非常相似,您必须在sys文件中编写系统条目。port 命令标识了 tiny 连接到的串行端口
system          tiny
time            Any
port            direct1
speed           38400
chat            ogin: cathcart word: catch22

port在文件中,您必须描述直接连接的串口。由于不需要拨号,因此不需要拨号器条目。
port            direct1
type            direct
speed           38400
device		    /dev/ttyS1

注释

[1]

如果您只想尝试 UUCP,请获取您附近存档站点的号码。记下登录名和密码——它们是公开的,以便进行匿名下载。在大多数情况下,它们类似于 uucp/uucpnuucp/uucp

[2]

唯一的限制是它不应超过七个字符,以免混淆在对文件名施加严格限制的操作系统上运行的 UUCP 实现。超过七个字符的名称通常会被 UUCP 截断。某些版本甚至将名称限制为六个字符。

[3]

UUCP 映射项目注册全球所有 UUCP 主机名,并确保它们的唯一性。

[4]

较旧的 Version 2 UUCP 在被呼叫时不会广播其名称;但是,较新的实现通常会这样做,Taylor UUCP 也是如此。

[5]

例如,大多数公司的私人安装要求您拨打 0 或 9 才能获得外线。

[6]

tty 的比特率必须至少与最大传输速度一样高。

[7]

如果远程系统运行 Taylor UUCP,它将服从。

[8]

有些调制解调器似乎不喜欢这样,偶尔会挂起。