IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux shell与expect配合完成自动打包资源并scp到另一台Linux电脑的例子 -> 正文阅读

[系统运维]Linux shell与expect配合完成自动打包资源并scp到另一台Linux电脑的例子

有时我们想使用shell脚本做一些自动操作,例如ssh或scp时自动输入密码,可以使用expect工具来实现。

需求:

使用shell与expect混合编程,将一个文件从机器A(Ubuntu16.04)中的目录mydata打包为mydata.tar.gz自动scp到机器B中(Ubuntu18.04),能自动接受yes/no询问,能自动输入密码。

按照网上的操作遇到的问题:

脚本自动跑了,但在自动输入密码时直接跳过了,导致自动scp失败

最终成功的脚本:

#!/bin/bash

SCRIPT_HOME=$(cd "$(dirname "$0")"; pwd)
cd $SCRIPT_HOME
tar cvf mydata.tar.gz mydata/

expect <(cat << 'MYEOF'
set timeout 5
spawn scp mydata.tar.gz keycer@192.168.0.139:/home/keycer
expect { 
  "*(yes/no)?" {send "yes\r"; exp_continue}
  "*password:" {send "keycer\r"; exp_continue}
}

#下面不能使用interact和expect eof, 具体原因请查看https://blog.csdn.net/modi000/article/details/107115286/
#经测试使用了interact会报错:spawn_id: spawn id exp4 not open
#interact 

MYEOF
)

脚本截图(为防止上面代码编辑器对某些空格的错误处理):

注意事项:

(1)spawn,send,interact 命令是expect工具中自带的命令,在shell中无法运行,必须要在expect环境中才能正常使用

(2)注意使用的是bash脚本引擎,经测试使用dash脚本引擎运行会报错

(3)第一行SCRIPT_HOME=那是在获取脚本所在的目录

(4)脚本在Ubuntu16.04环境中运行成功

参考链接:

(1)expect脚本中使用expect eof 和使用interact的区别:https://blog.csdn.net/modi000/article/details/107115286/

(2)Shell脚本与expect脚本混合编程的正确方法:https://stackoverflow.com/questions/41165719/embedding-an-expect-script-inside-a-bash-script

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 12:11:03  更:2021-09-09 12:12:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 3:40:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码