一,什么是expect?

expect 是一种脚本语言,

在做系统管理时,我们很多时候需要输入密码,例如:连接 ssh,连接ftp,

那么如何能做到不输入密码吗?

我们需要有一个工具,能代替我们实现与终端的交互,

那么,就是它:expect,管理员的最好的朋友之一

它能够代替我们实现与终端的交互,我们不必再守候在电脑旁边输入密码,

或是根据系统的输出再运行相应的命令,

这些都可以由expect代替我们来完成

二,安装 expect

因为expect 是基于tcl, 所以建议yum安装,省去相关依赖包的安装

#yum install expect

会安装2个包 一个tcl, 一个expect

检查expect命令位置

#which is expect

/bin/expect

脚本如下

#!/bin/expect

set timeout -1

spawn scp -r /data/mysql/dbbackup  scp_user@10.129.148.11:/data/scp_data_dir/maxus_data/

expect "password:"

send "P1qSX2wDC!\r"

expect eof

exit

1.  #!/bin/expect

这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。

注意:这一行需要在脚本的第一行。

2. set timeout -1

-1 永不超时,计时单位是:秒

3. spawn scp -r /data/mysql/dbbackup  scp_user@10.129.148.11:/data/scp_data_dir/maxus_data/

spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。

它主要的功能是给ssh运行进程加个壳,用来传递交互指令。

4. expect "password:"

这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的超时时间

5. send "ispass\r"

这里就是执行交互动作,与手工输入密码的动作等效。

温馨提示: 命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下。

6. interact

执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。

7. expect eof

执行完后退出expect 环境

linux定时scp脚本,linux expect 实现定时scp的任务相关推荐

  1. linux使用shell脚本利用expect工具实现SCP传输文件到多台服务器

    1.安装expect yum install expect 2.设置服务器地址,用户名,密码,源路径,目标路径 新建文件host.txt添加如下内容 192.168.0.135 root 密码 源路径 ...

  2. linux非交互式脚本,Linux expect非交互式执行脚本

    expect简介 expect是一款自动化的脚本解释型的工具. expect基于tcl脚本,expect脚本的运行需要tcl的支持. expect对一些需要交互输入的命令很有帮助,比如ssh ftp ...

  3. linux执行命令脚本,Linux - 执行命令与脚本

    01 - Linux执行多条命令 方法1:在命令行下可以一次性粘贴多条语句,shell会依次执行并输出结果 方法2:在一个命令行中,用分号将各个命令隔开或者使用&&连接各个命令 示例: ...

  4. linux获取随机数脚本,Linux下对拍脚本与随机数生成器

    对拍脚本 新建一个文档 check.sh 作为对拍脚本. #!/bin/bash while(true)do #死循环 ./data > .in #运行数据生成器,将数据输出到1.in ./st ...

  5. linux防火墙shell脚本,Linux系统目录结构,Shell脚本;关闭和开启防火墙

    Linux系统目录结构 目录 描述 备注 /bin a.存放着最经常使用的命令 b.可执行文件,用户命令 c.构建最小系统所需要的命令 /boot a.内核与启动文件 b.系统启动相关文件 c.启动L ...

  6. linux du -sh 脚本,Linux之shell脚本(2)

    Linux之shell脚本(2) 一.printf命令: printf是一个把从标准输入的字符按照你所要求的格式输出到标准输出即屏幕的命令.在很多时候,我们可能需要将自己的数据给他格式化输出的. 1. ...

  7. linux内核优化脚本,linux内核高级优化脚本

    linux内核高级优化脚本 可以用于hadoop生态圈环境的组件安装 linux内核调优 具体的每一步的解释请参考 03搭建cdh 备注:使用与centos6和centos7两个系统版本执行 [[em ...

  8. linux基础配置脚本,Linux中selinux基础配置教程详解

    selinux(Security-Enhanced Linux)安全增强型linux,是一个Linux内核模块,也是Linux的一个安全子系统. 三种模式: Enforcing:强制模式,在selin ...

  9. linux日志清除脚本,linux 日志清除脚本

    linux 日志清除脚本 #!/bin/bash echo " linux clear log " echo " by knlve 2008-08-29" ec ...

  10. linux下清理脚本,linux通用清理脚本

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. #!/bin/sh ########################### #delete ...

最新文章

  1. WINDOWSPHONE STUDY1:创建一个 Windows Phone 7 下的简单 RSS 阅读器
  2. c# websocketServer传图片
  3. easyui复杂表单_EasyUI中实现form表单提交的示例分享
  4. 多进程实现生产者消费者
  5. SAP SuccessFactor学习中心的通知机制
  6. mybatis入门(七)之日志
  7. float php 运算_系统的讲解 - PHP 浮点数高精度运算
  8. php导入excel源码,利用PHPExcel类库,实现PHP导出导入Excel表格Excel文件!
  9. dedecms备份mysql数据库文件_dedecms备份的数据库文件在哪里
  10. javascript表单处理相关的知识总结(一)
  11. 抖音电商带货,卖给粉丝还是卖给有需要的人?
  12. 手记 《半年工作经验今日头条和美团面试题面经分享》
  13. 通过wifi无法连接手机调试
  14. MT4 服务器信号,手机实时接收MT4软件指标信号(简单几步设置搞定)
  15. Freepiano如何使用sf2音源,sfark如何转换至sf2?
  16. 初学java网络编程的一些总结
  17. 微信公众号第三方登录,简单易懂
  18. Idea中如何查看pom中dependency Analyzer的快捷键
  19. 【高德地图】iOS 开发汇总(一)
  20. 最详细的Excel模块Openpyxl教程——基础操作

热门文章

  1. openfeign调用 HttpServletRequest作为参数 报错..
  2. 第11章 进入保护模式
  3. 用单片机测量流体流速的_影响超声波流量计(热量表)测量精度的主要因素
  4. python ftp 上传文档出现 553 Could not create file
  5. 非maven配置SpringBoot框架
  6. python函数-基础知识
  7. 任务管理器启动资源管理器
  8. Nhibernate 过长的字符串报错 dehydration property
  9. micropython stm32f407 以太网_[MicroPython]STM32F407开发板DIY声光控开关
  10. acctype mysql assoc_DedeCMS V5.3二次开发经验分享