使用expect实现shell中scp自动输入密码

前段时间有一个需求,要实现一个自动备份脚本,因为不需要全部备份,所以没有使用rsync,在这里使用scp。因为scp需要输入用户密码,在网上查了好多种方法,这里使用expect来实现。

1、首先安装expect:这里直接使用yum安装就行

yum install expect。

2、编写脚本

#!/usr/bin/expect

set timeout 10

expect “password”

send “123456\r”

expect eof

在这里呢,一般就行了,网上也都是这么介绍的。

但是由于我的脚本里面需要备份好几个文件,而且文件名还不是固定的,所以需要带入shell变量,而expect接收参数的方式和bash脚本的方式不太一样,bash是通过$0

... $n 这种方式,而expect是通过set [lindex $argv ],例如set

username [lindex $argv 0]。所以我写了两个脚本进行嵌套。

接下来以我的脚本为例子,来给大家介绍一下

脚本1:名为backup1.sh

#!/usr/bin/expect

set timeout

-1 设置timeout为-1就是没有限制

set passwd [lindex $argv 0]

set dir1 [lindex $argv 1]

set dir2 [lindex $argv 2]

set date [lindex $argv

3] 这0、1、2、3为执行这个脚本时后面输入的东西

#back dir1

spawn scp –P222 root@192.169.1.1:/home/aaa_$date.tgz $dir1

expect “password”

send “$passwd\r”

expect eof

#back dir2

spawn scp –P222

root@192.169.1.1:/home/bbb_$date.tgz $dir2

expect “password”

send “$passwd\r”

expect eof

脚本2:名为backup2.sh

#!/bin/bash

passwd = “123456”

dir1 = “/home”

dir2 = “/opt”

date = ‘date’

/home/backup1.sh $passwd $dir1 $dir2 $date

这就是expect脚本的用法

然后在执行备份脚本的时候执行backup2就行了。还有就是expect只能使用绝对路径来是执行,不能使用sh等命令。如./backup2,因此要赋予脚本执行的权限。

这样写是不是就是一目了然了。

这是集网络之大成。取之于网络,分享于网络。如有雷同,纯属偶然,欢迎大家吐槽。

linux 脚本 expected,使用expect实现shell中scp自动输入密码相关推荐

  1. linux脚本获取日期格式,关于shell脚本中的bash:yyyy-mm-dd格式日期

    我尝试在bash shell脚本中使用$(date),但是我希望日期采用YYYY-MM-DD格式.我怎么得到这个? 在巴什: 从date获取年-月日 DATE=`date +%Y-%m-%d` GET ...

  2. linux 自动化交互套件 expect 介绍 shell非交互

    expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信. expect自动交互流程: spawn启动指定进程---expect获取指定关键字--- ...

  3. shell 中scp 和 ssh密码输入 --expect (转:http://blog.sina.com.cn/s/blog_8ad7d4ca01014lft.html)

    这里必须先安装: yum install expect -y expect是一种自动交互语言,能实现在shell脚本中为scp和ssh等自动输入密码自动登录. 下面给出scp和ssh的使用示例: 1. ...

  4. ue 编写linux脚本,通过什么工具编写shell脚本更方面直观

    刚开始学习写shell脚本,现在主要是通过vi编辑器,但感到很不方便和直观.通过UtralEdit倒是方便但不直观,比如shell编程中的关键字不能醒目出来.想请教一下各位大虾,有没有这么类似于像vc ...

  5. linux脚本无法执行命令,为什么Shell脚本执行不成功?原来是这样

    Shell脚本语言是linux系统中内置的一门非常强大的语言,非常善于处理操作系统层面的应用,我们从网上下载的很多应用的安装和启动往往都是用Shell脚本语言写的.可是初步开始使用linux的小伙伴是 ...

  6. Shell脚本笔记(三)shell中的数学计算

    shell中的数学计算 一.使用方括号 #!/bin/bash a=10 b=29 c=88res=$[$a * ($c-$b)] echo $res 二.使用(()) echo $((1+9)) ( ...

  7. 深度linux夜间模式,在Linux下安装Yin-Yang以在KDE中设置自动夜间模式

    本文介绍在Linux操作系统下安装Yin-Yang以能够在KDE中设置自动夜间模式,虽然本文主要是关注KDE Plasma 5桌面环境的,但Yin-Yang也适用于其他桌面环境. 下载链接 在Linu ...

  8. linux 脚本 expected,Linux | shell与expect结合使用

    在linux操作系统下,使用脚本自动化,一般由两种方案. 方案一:telnet+ftp 方案二:ssh+scp+expect. 以下主要使用ssh+scp+expect为例进行说明使用方式. 第一步: ...

  9. linux脚本里用expect,如何在bash脚本中使用expect

    这是我在 following bash脚本中使用的代码片段: for user_input in `awk '{print}' testfile_$$.txt` do ipaddress=`echo ...

最新文章

  1. C和C++安全编码笔记:总结
  2. 学习HTML5之塔克大战(详细记录)
  3. Ubuntu 12.04下spark1.0.0 集群搭建(原创)
  4. java开发中实际遇到的问题总结_内行总结:装修中最容易遇到的16个问题及其解决方式!...
  5. pcl中ransac提取直线_复杂场景中的一个图像配准思路
  6. 深入浅出WPF之Binding的使用(二)
  7. Oracle 自带sqldeveloper导入数据到表
  8. 2012高等学校计算机等级考试试卷二级 vb.net程序设计,2012上海市高等校计算机等级考试试卷二级VBNET程序设计.docx...
  9. springcloud(十):服务网关zuul
  10. IPython notebook(Jupyter Notebook) 的使用
  11. Spring Cloud——服务发现与注册
  12. [原创]Allegro 导入DXF文件,保留布好的线路信息
  13. 计算机二级公共基础知识(四)—— 数据库设计基础
  14. 开启Windows卓越性能模式
  15. PC端淘宝小程序开发记录
  16. MySQL:带你掌握表的增删查改
  17. Proxmox VE 7.2 使用qemu-img转换磁盘格式
  18. 计算机考研调剂专业课,一波七折的计算机考研初试调剂经验教训贴,别放弃,太阳还在...
  19. 读《当我跑步时,我在想什么》有感
  20. android 7.1快捷方式App Shortcuts

热门文章

  1. Unity5.联机笔记
  2. uni-app中文本过长-实现折叠与展开效果
  3. SDCard权限设置
  4. excel怎么一次性删除所有的批注
  5. 一张照片就能攻破人脸识别系统,人脸识别安全性亟需提高
  6. 计算机技能高考素材,高中作文万能通用素材 2021高考必备作文素材
  7. IC卡密码的破解方法浅谈
  8. 【百度网盘】 个人资源共享
  9. Oracle 考试题 答案
  10. JavaWeb笔记:第07章 MVC |EL |JST |Filter |Listener |JQuery |AJAX |Maven |JSON |Redis |Linux |Nginx