68、《Kermit初始化与UUCP系统全解析》

《Kermit初始化与UUCP系统全解析》

1. Kermit初始化文件

Kermit初始化文件 bbsite.ini 如下:

$ cat bbsite.ini
# This file presents the second portion of the kermit initialization sequence
# that is dynamically created before the C−Kermit invocation and saved in the
# then created kermit take−file. It contains bulletin−board site specific data,
# cannot be copied as it is. The displayed syntax is C−Kermit specific.
# Phone number to dial
output ATDT12125671234\13
# The following sequence depends on the actual dialogue between
# this host and the bulletin−board site. Each input entry specifies the
# time to wait and the expected "pattern" to be received
input 70 CONNECT
if failure goto ACQUIRE_MODEM
input 20 logon id:
if failure goto ACQUIRE_MODEM
# Login ID – for zmodem TP002324
output TP002324\13
input 20 password:
if failure goto ACQUIRE_MODEM
# No password on this account
output \13
input 20 cmd>
if failure exit 1
# zmodem production= 1224, test= 1299
output $$ADD ID=TP002324 BID='TESTING'\13
input 20 seconds
if failure exit 1
# Change directory for file to send named FileToGo
cd /share/bulletin−board/data
# Send the file with periodic (fake) key insertion
# Program "sz" to transmit the file is dynamically set
sz −w16384 FileToGo
if failure exit 2
input 50 cmd>
if failure exit 1
output LOGOFF\13
input 30 LOGOFF completed

该文件展示了Kermit初始化序列的第二部分,在调用C - Kermit之前动态创建,并保存到生成的Kermit文件中。它包含了公告板站点的特定数据,不能直接复制使用,其语法是C - Kermit特有的。

2. UUCP系统概述

UUCP即“UNIX to UNIX Copy”,是一组用于不同UNIX系统间通信的程序集合。它能实现UNIX系统间的文件传输、在远程UNIX系统上执行命令以及向远程UNIX系统的用户发送邮件。

UUCP主要使用标准串行连接和电话服务,也可在本地网络上运行。每个连接基于用户请求建立,会创建相应的拨号链接。参与UUCP连接的每个UNIX系统都有描述与其直接相连的其他系统的文件,包括可用链接的类型,这些文件由系统管理员创建。通常,UUCP所需的监督和整体管理较少。

虽然UUCP是一个相对古老的UNIX子系统,如今很多人认为它已过时,但实际上它出现较早,且仍在使用,努力跟上其他更先进的通信技术的步伐。它在管理其他UNIX问题,特别是与调制解调器相关的领域中也很有用。此外,UUCP还支持Usenet,这是一个使用公共领域Netnews软件交换各种主题新闻的公告板网络。

3. UUCP的工作原理

使用UUCP主要涉及三个程序:
- uucp :用于在本地和远程机器之间进行文件传输,类似于 cp 命令,但具有扩展的寻址能力。
- uux :用于在远程机器上执行命令,由于安全原因,通常会受到一定限制。
- mail :与UUCP兼容的邮件程序版本,即 /bin/mail ,不要与 /usr/ucb/mail (第20章讨论的电子邮件用户代理)混淆。

这些程序主要从命令行使用,但更多的工作是在后台由两个UUCP守护进程 uucico uuxqt 完成的。 uucico 负责在UNIX系统之间传输文件和远程执行请求, uuxqt 负责在远程UNIX系统上处理这些请求。

UUCP是一个“存储转发”子系统,传输和远程处理请求不会立即执行,而是先放入队列等待后续执行。当 uucp uux 程序被调用时,会在 /usr/spool/uucp 目录中创建一个包含源文件和目标文件信息、程序选项以及请求类型的“工作文件”。如果需要传输文件,还会复制要传输的文件。 uucico 守护进程会扫描该目录中的工作文件,尝试联系指定的远程UNIX系统并执行工作文件中的指令。在BNU UUCP版本中,中间进程 uusched 会进行扫描,并在满足条件时调用 uucico 。工作文件只包含 uucico 需要知道的部分信息,何时以及如何执行的信息包含在 /usr/lib/uucp 目录中的一组UUCP配置文件中,这需要系统管理员提前设置。

4. UUCP版本
  • Version 2 UUCP :1976年在AT&T贝尔实验室开发,1977年随UNIX Version 7发布,后续更新版本被集成到SVR1和SVR2平台。
  • Truscott UUCP :随BSD 4.2发布,基于杜克大学的更新版本(杜克大学的UUCP版本已不再使用)。
  • BNU UUCP :随着SVR3发布,也称为HoneyDanBer UUCP。BSD 4.3的UUCP进行了重大更新,融合了一些BNU特性,同时与其他Version 2 UUCP实现保持了更多的连续性。

一般来说,类BSD的UNIX平台主要使用Version 2 UUCP,而类System V的UNIX平台主要使用BNU UUCP。可以通过列出 /usr/lib/uucp 目录并查找特定文件来确定运行的UUCP版本。如果存在 L.sys 文件,则是Version 2 UUCP;否则, Systems 文件属于BNU UUCP。如今,Solaris、HP - UX等现代UNIX系统将UUCP配置文件保存在 /etc/uucp 目录中。

5. UUCP聊天 - 传输会话

假设两个远程UNIX主机 red blue 可以通过电话网络进行通信,并且发起了从 red blue 的UUCP文件传输,且两个主机都已正确配置。主机之间的通信方式完全取决于UUCP子系统的配置,配置信息记录在UUCP配置文件中,如BNU UUCP子系统的 /etc/uucp/Systems 文件(早期为 /usr/lib/uucp/Systems ),或Version 2 UUCP子系统的 /etc/uucp/L.sys 文件(或 /usr/lib/uucp/L.sys )。

在主机 red 上的相应配置条目如下:

blue  Any  ACU  19200  3217654  ogin: iamred  ssword: passme

该条目定义了 red 系统可以随时通过连接到电话线的调制解调器(ACU = Automatic Calling Unit)以19200 bps的速度,使用电话号码3217654,以用户名 iamred 和密码 passme 登录到 blue 系统。

UUCP会话从主机 red 上的用户命令开始,直到主机 blue 上的远程系统守护进程验证传输为止。如果有多种方式可以访问远程主机,配置文件中可能会有多个该主机的条目。配置文件只指定了连接的名称,不描述实现的硬件。另一个文件,如BNU中的 Devices (或Version 2中的 L - devices ),包含了指定连接与 uucico 守护进程访问实际设备(如使用的串行线路)的设备名称之间的一对一映射。如果设备是调制解调器,如何拨号的额外信息可以在 acucap 或BNU中的 Dialers (或Version 2中的 modemcap )文件中找到。

文件传输可能不会立即发生,原因可能是传输被限制在特定时间,或者电话线当时繁忙。在这种情况下, uucico 会留下相应的状态文件,并在下次调用时再次尝试,直到传输成功或达到最小重试周期(默认55或60分钟)。

文件传输在源主机和目标主机的两个 uucico 守护进程之间进行。源系统(调用方)的 uucico 扮演“主角色”,控制链接;目标系统(接收方)的 uucico 扮演“从角色”,检查本地权限以授权传输。两个守护进程相互通信,当没有更多文件需要传输时,它们同意挂断。此时,另一个守护进程 uuxqt 会被调用,扫描队列目录以查找来自远程系统的任何未完成的执行请求。如果存在这样的请求, uuxqt 会派生一个命令来执行用户的请求。

6. UUCP命令和守护进程
6.1 主要的UUCP命令

UUCP相关命令位于 /usr/bin 目录中,核心命令是 uucp uux
- uucp命令 :用于将源文件复制到指定的目标文件。文件名可以是本地系统上的完整路径名,也可以采用 system - name!pathname 的形式,其中 system - name 指定远程系统, pathname 指定文件的完整路径。 uucp 命令在传输过程中会保留执行权限,并为所有人授予读写权限(文件模式666)。

uucp 命令的格式为:

uucp −options source−file destination−file

选项及含义如下:
| 选项 | 含义 |
| ---- | ---- |
| -c | 复制时使用源文件,而不是将文件复制到队列目录,这是默认设置。 |
| -C | 在UUCP队列目录中创建传出文件的副本,而不是直接将源文件复制到目标系统,这样可以在发出 uucp 命令后删除源文件。 |
| -d | 为文件复制创建所有必要的目录,这是默认设置。 |
| -f | 不为文件复制创建中间目录。 |
| -j | 在标准输出上输出作业标识ASCII字符串,该作业标识可用于 uustat 命令获取作业状态或终止作业。 |
| -m | 复制完成后向请求者发送邮件。 |
| -r | 不启动 uucico 守护进程,仅将作业排队。 |
| -g grade | grade 是一个字母或数字,从0到9、A到Z或a到z,0是最高等级,z是最低等级。较低的等级会使作业在特定对话中更早传输,默认等级是 n 。 |
| -n username | 通知远程系统的 username 有文件发送。 |
| -x debug - level | 在标准输出上生成调试输出, debug - level 是0到9之间的数字,数字越大,信息越详细,5、7和9是不错的尝试值。 |

  • uux命令 :用于从各个系统收集文件,在指定系统上执行命令,并将标准输出发送到指定系统的文件中。由于安全原因,大多数安装限制了 uux 可以执行的命令列表,通常只允许接收邮件。远程执行权限在相应的配置文件中定义。

uux 命令的格式为:

uux −options command−string

选项及含义如下:
| 选项 | 含义 |
| ---- | ---- |
| -b | 如果作业失败(返回非零退出状态),返回提供给 uux 命令的标准输入。 |
| -c | 复制时使用源文件,而不是将文件复制到队列目录,这是默认设置。 |
| -C | 强制将本地文件复制到UUCP队列目录进行传输。 |
| -n | 不通过邮件返回作业成功或失败的指示。 |
| -p | 与 - 相同,将 uux 的标准输入作为命令字符串的标准输入。 |
| -r | 不启动 uucico 守护进程,仅将作业排队。 |
| -z | 即使作业成功(返回零退出状态),也通过邮件返回指示。 |
| -a name | 使用 name 作为用户标识,替换发起者的用户ID,通知将返回给该用户。 |
| -g grade | grade 是一个字母或数字,从0到9、A到Z或a到z,0是最高等级,z是最低等级。较低的等级会使作业在特定对话中更早传输,默认等级是 A 。 |
| -x debug - level | 在标准输出上生成调试输出, debug - level 是0到9之间的数字,数字越大,信息越详细,5、7和9是不错的尝试值。 |

uux 会尝试将所有文件传输到执行系统。对于输出文件,文件名必须使用括号进行转义。例如:

uux ahost!cut −f1 bhost!/usr/file \(chost!/usr/file\)

该命令会从系统 bhost 获取 /usr/file 文件并发送到系统 ahost ,在该文件上执行 cut 命令,并将结果发送到系统 chost /usr/file 文件中。

6.2 UUCP守护进程

UUCP守护进程是参与执行不同UUCP作业的服务器程序,它们根据需要或由其他程序启动。大多数UUCP守护进程位于 /usr/lib/uucp 目录中,下面详细介绍几个重要的守护进程:
- uucico守护进程 :负责传输UUCP工作文件, uux uucp 命令只是将作业放入队列,由 uucico 进行传输。根据UUCP版本的不同,该守护进程可以由另一个守护进程调度器 uusched 启动,也可以手动启动(主要用于调试目的)。

启动 uucico 守护进程的命令格式为:

/usr/lib/uucp/uucico −options

主要选项如下:
| 选项 | 含义 |
| ---- | ---- |
| -d spool - directory | 定义包含要传输的UUCP工作文件的目录,默认目录是 /usr/spool/uucp 。 |
| -i interface | 定义与 uucico 一起使用的接口,该接口仅影响从模式,已知的接口是 UNIX (默认)。 |
| -r role - number | 指定 uucico 应执行的角色, role - number 为1表示主模式,0表示从模式(默认)。当 uucico 由另一个程序或 cron 启动时,应指定主模式。 |
| -s system - name | 指定要尝试联系的远程系统,当角色为主模式时需要指定。 |
| -x debug - level | 在标准输出上生成调试输出, debug - level 是0到9之间的数字,数字越大,信息越详细,5、7和9是不错的尝试值。 |

  • uuxqt守护进程 :负责执行远程系统上使用 uux 命令生成的远程作业请求(邮件程序也使用 uux 进行远程邮件请求)。 uuxqt 守护进程会在队列目录中查找以 “X.” 开头的文件,对于每个这样的文件,它会检查所有必需的数据文件是否可用和可访问,以及指定的命令是否被允许在指定系统上执行。相应的配置文件(主要是 Permissions 文件)用于验证文件可访问性和命令执行权限。

启动 uuxqt 守护进程的命令格式为:

/usr/lib/uucp/uuxqt [ −ssystem−name ] [ −xdebug−level ]

选项及含义如下:
| 选项 | 含义 |
| ---- | ---- |
| -ssystem - name | 指定远程系统的名称。 |
| -xdebug - level | 在标准输出上生成调试输出, debug - level 是0到9之间的数字,数字越大,信息越详细,5、7和9是不错的尝试值。 |

在执行 uuxqt 命令之前,必须设置两个环境变量:
- UU_MACHINE :发送作业的机器。
- UU_USER :发送作业的用户。

这些变量可以在调用 uuxqt 守护进程的程序中指定,也可以通过其他方式设置。

  • uusched守护进程 :是UUCP文件传输调度器,通常由 cron 间接启动(实际上由另一个UUCP程序 uudemon.hour 启动,该程序为该守护进程的成功执行设置必要的环境,而 uudemon.hour cron 启动)。

启动 uusched 守护进程的命令格式为:

/usr/lib/uucp/uusched [ −udebug−level ] [ −xdebug−level ]

可用选项仅用于调试目的, debug - level 是0到9之间的数字,数字越大,信息越详细:
| 选项 | 含义 |
| ---- | ---- |
| -udebug - level | 指定要传递给 uucico 程序的调试级别。 |
| -xdebug - level | 指定内部输出消息的调试级别。 |

在Solaris平台上,间接启动 uusched 守护进程的 cron 条目示例如下:

15,45  *  *  *  *  /etc/uucp/uucp/uudemon.hour

每半小时启动一次 uudemon.hour 程序,该程序会调用 uusched 守护进程。

通过以上对Kermit初始化文件和UUCP系统的详细介绍,我们可以更好地理解和使用这些工具进行UNIX系统间的通信和文件传输。

下面是一个简单的mermaid流程图,展示了UUCP文件传输的基本流程:

graph LR
    A[uucp或uux调用] --> B[创建工作文件]
    B --> C[uucico扫描工作文件]
    C --> D{是否满足条件}
    D -- 是 --> E[uucico尝试连接远程系统]
    E --> F{连接成功?}
    F -- 是 --> G[传输文件]
    F -- 否 --> H[uucico记录状态并重试]
    G --> I{传输完成?}
    I -- 是 --> J[uuxqt检查执行请求]
    I -- 否 --> H
    J --> K{有执行请求?}
    K -- 是 --> L[uuxqt执行命令]
    K -- 否 --> M[结束]
    L --> M

这个流程图清晰地展示了从用户调用 uucp uux 命令开始,到文件传输和可能的命令执行的整个过程,帮助我们更好地理解UUCP系统的工作机制。

《Kermit初始化与UUCP系统全解析》

7. UUCP配置文件的重要性及关联

UUCP系统的正常运行高度依赖其配置文件,这些文件详细描述了系统间的连接信息、设备使用以及权限设置等。配置文件的正确设置直接关系到文件传输和命令执行的成功与否。

  • Systems/L.sys文件 :在BNU UUCP子系统中是 /etc/uucp/Systems (早期为 /usr/lib/uucp/Systems ),在Version 2 UUCP子系统中是 /etc/uucp/L.sys (或 /usr/lib/uucp/L.sys )。该文件定义了系统间的连接信息,如主机 red 中关于 blue 主机的配置条目:
blue  Any  ACU  19200  3217654  ogin: iamred  ssword: passme

它规定了连接的时间、使用的设备(调制解调器)、连接速度、电话号码、登录名和密码等。

  • Devices/L - devices文件 :BNU中的 Devices 或Version 2中的 L - devices 文件,建立了指定连接与 uucico 守护进程访问实际设备(如串行线路)的设备名称之间的一对一映射。例如,如果配置中指定了某种连接方式,该文件会明确对应的设备名称,以便 uucico 正确访问设备。

  • acucap/Dialers/modemcap文件 :如果连接设备是调制解调器,这些文件包含了如何拨号的额外信息。在BNU中是 acucap Dialers ,在Version 2中是 modemcap 。它们提供了调制解调器拨号所需的具体指令,确保 uucico 能够正确拨号并建立连接。

  • Permissions文件 :主要用于验证文件可访问性和命令执行权限。 uuxqt 守护进程在执行远程作业请求时,会参考该文件来检查所有必需的数据文件是否可用和可访问,以及指定的命令是否被允许在指定系统上执行。

8. UUCP使用场景及案例分析
8.1 文件传输场景

假设一个企业内部有多个UNIX服务器,分布在不同的地理位置,需要进行文件共享。通过UUCP的 uucp 命令,可以方便地实现文件在不同服务器之间的传输。

例如,服务器 server1 上有一个重要的配置文件 config.txt ,需要传输到服务器 server2 上。可以使用以下命令:

uucp /path/to/config.txt server2!/path/to/destination/config.txt

在这个过程中, uucp 会将作业放入队列,由 uucico 守护进程负责传输。如果服务器 server2 配置了相应的权限和连接信息,文件将被成功传输。

8.2 远程命令执行场景

在某些情况下,需要在远程UNIX系统上执行特定的命令。例如,管理员需要在服务器 server3 上执行 ls 命令查看文件列表。可以使用 uux 命令:

uux server3!ls > local_result.txt

该命令会将 server3 上执行 ls 命令的结果输出到本地的 local_result.txt 文件中。 uux 命令将作业放入队列, uucico 负责建立连接并传输请求, uuxqt server3 上执行命令并返回结果。

9. UUCP的优缺点分析
9.1 优点
  • 兼容性好 :UUCP可以在不同的UNIX系统之间进行通信,无论是类BSD的UNIX平台还是类System V的UNIX平台,都能通过不同的版本实现连接和数据交换。
  • 功能丰富 :它不仅可以实现文件传输,还能在远程系统上执行命令和发送邮件,满足了多种UNIX系统间的通信需求。
  • 相对稳定 :经过多年的发展和改进,UUCP系统相对稳定,在一些特定的环境中能够可靠地运行。
9.2 缺点
  • 速度较慢 :由于主要使用标准串行连接和电话服务,传输速度相对较慢,尤其是在现代高速网络环境下,其传输效率显得较低。
  • 配置复杂 :涉及多个配置文件,如 Systems Devices Permissions 等,需要系统管理员对每个文件进行详细配置,配置过程较为复杂,容易出错。
  • 安全性有限 :在安全方面,UUCP的防护机制相对较弱,容易受到各种网络攻击,如密码泄露、命令注入等。
10. UUCP的未来发展趋势

尽管UUCP已经有了较长的历史,并且面临着一些挑战,但它仍然有一定的发展空间。

  • 与现代技术融合 :随着网络技术的不断发展,UUCP可能会与现代的网络协议和技术进行融合,提高其传输速度和安全性。例如,结合VPN技术,增强其在公共网络上的传输安全性。
  • 简化配置和管理 :未来的UUCP版本可能会在配置和管理方面进行改进,提供更加直观和便捷的配置界面,降低系统管理员的配置难度。
  • 特定领域的应用 :在一些特定的领域,如工业控制、嵌入式系统等,UUCP的稳定性和兼容性可能会使其继续发挥重要作用。

下面是一个mermaid流程图,展示了UUCP系统配置和使用的整体流程:

graph LR
    A[系统管理员创建配置文件] --> B{选择UUCP版本}
    B -- Version 2 --> C[/配置L.sys等文件/]
    B -- BNU --> D[/配置Systems等文件/]
    C --> E[uucp或uux命令调用]
    D --> E
    E --> F[创建工作文件]
    F --> G[uucico处理工作文件]
    G --> H{连接远程系统}
    H -- 成功 --> I[文件传输/命令执行]
    H -- 失败 --> J[uucico重试]
    I --> K[uuxqt处理执行请求]
    K --> L{完成任务}
    L -- 是 --> M[结束]
    L -- 否 --> J

这个流程图展示了从系统管理员配置UUCP系统开始,到用户使用 uucp uux 命令进行文件传输和命令执行的整个过程,涵盖了配置、调用、传输和执行等关键步骤,有助于我们从宏观上理解UUCP系统的运行机制。

通过对UUCP系统的全面了解,包括其工作原理、版本、命令、守护进程、配置文件以及优缺点和发展趋势,我们可以更好地在实际应用中选择和使用UUCP,实现UNIX系统间的高效通信和数据交互。同时,我们也应该关注其未来的发展方向,以便在技术不断进步的过程中,充分发挥UUCP的优势,为企业和组织的信息化建设提供支持。

综上所述,Kermit初始化文件和UUCP系统在UNIX系统的通信和文件传输中都有着重要的作用。Kermit初始化文件为特定的公告板站点通信提供了基础配置,而UUCP系统则为不同UNIX系统之间的全面通信提供了强大的支持。我们需要深入理解它们的工作原理和使用方法,才能更好地利用这些工具,提高工作效率和系统的可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值