Linux之expect交互语言命令

****前言**** 记得在去年在蝴蝶脚本已经看到过expect,只不过没有去留意它是什么,是干什么的,然而今天去了解了,并利用它来写自动化交互脚本。在服务器开发中,有时候需要同步文件(scp),远程服务器(ssh)等等,难免要进行密码的检验,这就麻烦了,不过认识expect就有解决方案啦,那么我们来认识一下吧~~~


****expect简介**** expect是Linux脚本编程工具语言,用来实现自动和交互式任务进行通信,从而不用手动处理。换句话说就是这些命令和程序是期望从终端得到输入,一般来说这些输入都需要手工输入进行的。 expect可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。


****expect安装****

$sudo apt-get install expect

****简单使用****

#!/usr/bin/expect
# ---------- 配置信息开始----------
#变量
set password heiheiPsd 
# expect脚本设置 
set timeout -1
#  ----------配置信息结束----------

spawn ssh root@192.168.88.888
expect "*password:"
send "$password\r"
interact
  • send:用于向进程发送字符串
  • expect: 期望从进程接收到的字符串,后面也可以跟正则表达式
  • spawn:启动进程
  • set timeout -1 :脚本运行超时(秒) -1不会超时

****与bash共用**** 从上面可以看出第一行已经指定了脚本的解析器,但是很多时候或场景我们只希望expect作为shell脚本的一个小小的调用部分,然而使可以的,这也是最常用的。

#!/bin/bash

echo "this bash func"

#---------expect开始----------
set password fenglican 
set timeout -1

expect<<- END
spawn ssh root@192.168.88.888
expect "*password:"
send "$password\r"
interact

END
#---------expect结束----------

Linux运维基础且常用命令 Linux之crontab定时任务 Linux之sed文本处理命令 Linux之ps进程查看命令 Linux之expect交互语言命令 Linux之tail命令


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏最高权限比特流

使用svn时出现Can't switch /XXX/XXX because it is not the repository yet

1243
来自专栏电光石火

Linux安装DNSmasq搭建自己的公共DNS

DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。自己搭建公共DNS更加灵活,如果是在...

4178
来自专栏Laoqi's Linux运维专列

set_uid,set_gid,stick_bit,软硬连接

set_uid set uid 的意思是普通用户临时拥有该命令所有者的身份 授权的前提是必须是二进制文件,例如:ls passwd 等 给ls命令加s权限 rw...

3016
来自专栏python全栈布道师

当我们打开shell的时候,会加载哪些配置文件呢?加载的顺序又是怎么样呢?

3487
来自专栏Python攻城狮

Git的使用1.Git简介2.安装3.远程仓库4.本地仓库

博客地址:https://ask.hellobi.com/blog/zhiji 欢迎大家来交流学习。

744
来自专栏文武兼修ing——机器学习与IC设计

Windows平台下Python使用swig调用C++

步骤0:swig简介 swig是一种可以将C++代码转换为多种脚本语言封装的工具,可以在swig官网www.swig.org下载,解压后将swig.exe的路径...

4069
来自专栏python3

永远的开始:Hello world

__author__ = 'www.py3study.com' 定义变量__author__,通常用来表示这段代码的作者

491
来自专栏xiaoheike

maven web project打包为war包,目录结构的变化

所以这两个目录层级只是IDE为我们添加的,便于编程而添加的。Java Resource 目录是Source Folder,该目录下的资源都会被打包到:WEB-I...

1102
来自专栏GreenLeaves

三、公共语言运行时(CLR)简介

二、源代码=>程序集及程序集概念介绍中介绍了源代码通过C#编译器生成程序集(或者可执行应用程序exe)的整个过程,本文主要介绍公共语言运行时与程序集的关系. 1...

1916
来自专栏闵开慧

windows中django的安装

1 下载python,解压,配置环境变量,将python的路径复制出来D:\tools\python273,粘贴到环境变量path中即可。 2 下载django...

3448

扫码关注云+社区