当前位置: 首页 > news >正文

使用 `Expect` 工具实现了自动化文件传输

通过 `scp` 命令将本地目录复制到远程服务器,并自动处理密码输入和确认连接提示。

 

### 脚本头部

 

```bash

#!/usr/bin/expect

```

 

指定脚本的解释器为 `Expect`,告诉系统使用 `Expect` 来执行此脚本。

 

### 设置超时时间

 

```bash

set timeout 30

```

 

设置超时时间为 30 秒。如果在 30 秒内没有收到期望的响应,脚本将退出并报错。

 

### 设置变量

 

```bash

set host "remote_host"

set user "username"

set password "your_password"

set local_dir "/path/to/local/dir"

set remote_dir "/path/to/remote/dir"

```

 

定义脚本中使用的变量:

 

- `host`:远程服务器的地址或主机名。

- `user`:登录远程服务器的用户名。

- `password`:登录远程服务器的密码。

- `local_dir`:本地要复制的目录路径。

- `remote_dir`:远程服务器上的目标目录路径。

 

### 启动 `scp` 进程

 

```bash

spawn scp -rp $local_dir $user@$host:$remote_dir

```

 

- `spawn`:`Expect` 命令,用于启动一个新的进程。

- `scp -rp`:`scp` 命令的选项 `-r` 表示递归复制目录,`-p` 表示保留文件权限和时间戳。

- `$local_dir $user@$host:$remote_dir`:`scp` 命令的参数,指定本地目录和远程目标路径。

 

### 处理交互式提示

 

```bash

expect {

    "password:" { send "$password\r"; exp_continue }

    "continue connecting (yes/no)?" { send "yes\r"; exp_continue }

}

```

 

- `expect`:`Expect` 命令,用于等待并匹配特定的输出。

- `"password:"`:匹配 `scp` 命令提示的密码输入。

  - `send "$password\r"`:向 `scp` 进程发送密码,`\r` 表示回车。

  - `exp_continue`:继续等待下一个匹配,不退出 `expect` 块。

- `"continue connecting (yes/no)?"`:匹配首次连接时可能出现的确认提示。

  - `send "yes\r"`:发送 "yes" 并回车,确认连接。

 

### 等待进程结束

 

```bash

expect eof

```

 

- `expect eof`:等待 `scp` 进程结束,`eof` 表示 "End Of File",即进程结束的信号。

 

---

 

### 脚本总结

 

这个脚本通过 `Expect` 自动化了以下过程:

 

1. 启动 `scp` 命令进行文件传输。

2. 当出现密码提示时,自动输入预设的密码。

3. 当出现首次连接的确认提示时,自动回复 "yes"。

4. 等待文件传输完成并退出脚本。

 

这样,无需人工干预,即可实现自动化的安全文件传输。

相关文章:

  • c++11右值引用(rvalue reference)
  • FastAPI lifespan示例
  • 生态环评GIS/遥感制图:土地利用+植被覆盖+土壤侵蚀+水系提取,ArcGIS+ENVI实战
  • 响应式数据可视化大屏解决方案,重构工业交互体验
  • Chapter15 cross-origin resource sharing
  • Windsurf SWE-1模型评析:软件工程的AI革命
  • 上海人工智能实验室明珠湖会议首开,解答AI前沿疑问,推进科学智能
  • [论文阅读] 人工智能+软件工程 | 用大语言模型架起软件需求形式化的桥梁
  • 组态王工程运行时间显示
  • 开疆智能ModbusTCP转EtherCAT网关连接IVO编码器配置案例
  • 华为云Flexus+DeepSeek征文 | 利用Dify平台构建多智能体协作系统:从单体到集群的完整方案
  • 可编辑64页PPT | 基于DeepSeek的数据治理方案
  • CARSIM-与C#自动化测试方案
  • 自托管媒体跟踪器Yamtrack
  • MySQL 数据库索引详解
  • 微软数据分析师PL-300证书怎么考?
  • Python图像处理与计算机视觉:OpenCV实战指南
  • Dify动手实践课3
  • CVE-2025-24813源码分析与漏洞复现(Tomcat 路径等效漏洞与反序列化RCE)
  • npm下载离线依赖包
  • 学校网站建设要求/近期重大新闻事件
  • 网站怎么做网盘/百度推广获客成本大概多少
  • 空白网站怎么建立/如何做好网站的推广工作
  • 广州外贸独立网站/seo技术培训沈阳
  • 武汉培训网站建设/如何做平台推广赚钱
  • 淄博建设工程学校官方网站/模板建站多少钱