linux uucico命令

Linux uucico命令是UUCP(Unix-to-Unix Copy)系统的通信守护进程,负责建立连接、登录远程系统以及传输文件和执行命令。

提示: uucico是"UUCP Communication Program"的缩写,是UUCP系统的核心组件,通常作为守护进程运行,处理与其他系统的通信。

语法格式

uucico [选项] [系统名]

常用选项

选项 说明
-s 系统 与指定系统建立连接
-r1 以主模式运行(主动呼叫其他系统)
-r0 以从模式运行(等待其他系统呼叫)
-x 级别 设置调试级别(1-9,数字越大越详细)
-f 系统 与-s选项相同,强制忽略时间限制
-D 不进入后台运行,保持在前台
-q 仅处理队列,不尝试建立新连接
-l 从标准输入读取登录信息
-c 不调用远程系统,仅调试聊天脚本
-C 忽略呼叫时间限制
--help 显示帮助信息

使用示例

示例1:启动uucico守护进程

# 启动uucico守护进程
uucico &

# 在前台启动uucico并保持运行
uucico -D

# 检查uucico是否正在运行
ps aux | grep uucico
pgrep uucico

示例2:连接到特定系统

# 连接到名为"backupserver"的远程系统
uucico -s backupserver

# 使用调试模式连接,级别为5
uucico -s backupserver -x 5

# 强制连接,忽略时间限制
uucico -f backupserver

示例3:运行模式设置

# 以主模式运行(主动呼叫其他系统)
uucico -r1

# 以从模式运行(等待其他系统呼叫)
uucico -r0

# 以从模式运行特定端口
uucico -r0 -u ttyS0

示例4:调试和故障排除

# 使用高级调试(级别9)
uucico -s remotesys -x 9

# 调试聊天脚本,不实际连接
uucico -c -s remotesys

# 查看调试输出到文件
uucico -s remotesys -x 5 2>&1 | tee /tmp/uucico-debug.log

示例5:处理队列

# 仅处理队列中的作业,不尝试新连接
uucico -q

# 处理特定系统的队列
uucico -s remotesys -q

示例6:在实际系统中的应用

#!/bin/bash
# uucico管理脚本

case "$1" in
    start)
        echo "启动uucico守护进程..."
        uucico -r0 -D &
        echo $! > /var/run/uucico.pid
        ;;
    stop)
        echo "停止uucico守护进程..."
        kill $(cat /var/run/uucico.pid)
        rm -f /var/run/uucico.pid
        ;;
    status)
        if [ -f /var/run/uucico.pid ]; then
            echo "uucico正在运行,PID: $(cat /var/run/uucico.pid)"
        else
            echo "uucico未运行"
        fi
        ;;
    connect)
        echo "连接到远程系统 $2..."
        uucico -s "$2" -x 3
        ;;
    *)
        echo "用法: $0 {start|stop|status|connect 系统名}"
        ;;
esac

示例7:日志文件分析

# 查看uucico日志文件
tail -f /var/log/uucp/DEBUG

# 查看连接日志
tail -f /var/log/uucp/Log

# 查看特定系统的日志
grep "systemname" /var/log/uucp/DEBUG

# 统计连接次数
grep -c "call completed" /var/log/uucp/Log

示例8:结合inetd使用

# /etc/inetd.conf配置示例
# uucico服务配置
uucp stream tcp nowait root /usr/sbin/tcpd /usr/lib/uucp/uucico -l

# 重启inetd服务
sudo systemctl restart inetd
# 或
sudo killall -HUP inetd

uucico配置文件

uucico命令依赖于以下配置文件(通常位于/etc/uucp/目录):

文件 用途
sys 远程系统配置(连接参数、登录脚本等)
port 物理端口配置(串口、TCP端口等)
dial 拨号器配置
dialcode 拨号代码
config 全局配置
Permissions 访问权限控制

sys文件配置示例

# /etc/uucp/sys 配置示例
system remotesys
time any                    # 任何时间都可以呼叫
phone 555-1234              # 电话号码(用于拨号)
port serial1                # 使用的端口
speed 115200                # 波特率
chat login: mylogin         # 登录脚本
chat ssword: mypassword
chat-timeout 45             # 超时时间(秒)
protocol-parameter g 3      # 窗口大小
protocol-parameter i 3      # 分组大小
注意:
  • uucico通常作为守护进程运行,需要正确的权限设置
  • 配置文件修改后,需要重启uucico服务才能生效
  • 调试模式(-x)会产生大量日志,注意磁盘空间
  • 确保UUCP系统时钟同步,避免时间相关的问题
  • uucico可能使用大量系统资源,特别是在传输大文件时
  • 从模式(-r0)运行时,需要确保端口配置正确
  • 主模式(-r1)运行时,需要确保目标系统可访问
  • 权限配置文件(Permissions)控制哪些系统可以连接和操作

uucico工作流程

主动呼叫(主模式):
  1. 读取队列中的传输请求
  2. 查找目标系统的配置信息
  3. 建立物理连接(拨号或TCP)
  4. 执行登录脚本认证
  5. 协商传输参数
  6. 传输文件和执行命令
  7. 记录传输结果
等待连接(从模式):
  1. 监听配置的端口
  2. 接受传入的连接
  3. 验证对方系统身份
  4. 处理对方的请求
  5. 发送或接收文件
  6. 记录传输日志
  7. 关闭连接

安装和配置uucico

安装UUCP软件包

# Ubuntu/Debian系统
sudo apt-get update
sudo apt-get install uucp

# CentOS/RHEL系统
sudo yum install uucp

# 验证安装
which uucico
uucico --version

基本配置步骤

  1. 安装UUCP软件包
  2. 配置/etc/uucp/sys文件定义远程系统
  3. 配置/etc/uucp/port文件定义通信端口
  4. 配置/etc/uucp/dial文件(如果需要拨号)
  5. 设置/etc/uucp/Permissions文件控制访问
  6. 创建必要的spool目录并设置权限
  7. 启动uucico守护进程
  8. 测试连接和传输

故障排除

问题:uucico无法启动

可能原因: 配置错误或权限问题

解决: 检查配置文件和权限

# 使用调试模式查看错误
uucico -x 5 2>&1 | head -50
# 检查配置文件语法
/usr/lib/uucp/uuchk
问题:连接失败

可能原因: 远程系统不可达或配置错误

解决: 检查网络连接和系统配置

# 测试网络连接
ping remotehost
# 检查远程系统配置
grep "remotesys" /etc/uucp/sys
问题:登录失败

可能原因: 登录脚本错误或凭证错误

解决: 检查聊天脚本和凭证

# 调试聊天脚本
uucico -c -s remotesys -x 5
# 检查登录凭证是否正确
问题:文件传输失败

解决: 检查权限和磁盘空间

# 检查磁盘空间
df -h /var/spool/uucp
# 检查文件权限
ls -la /var/spool/uucp/
# 查看传输日志
tail -f /var/log/uucp/DEBUG

相关命令

  • uucp - UUCP文件复制命令
  • uuto - 发送文件到远程用户目录
  • uupick - 接收uuto发送的文件
  • uustat - 查看UUCP状态和队列
  • uux - 在远程系统执行命令
  • uuname - 列出已知的UUCP系统