zoukankan      html  css  js  c++  java
  • 神奇的expect

    想写自动化脚本的时候,遇到需要交互的,如ssh,scp,就束手无策,直到我知道了expect。

    expect 有一系列expect-send对组成,就像聊天一样。

    expect A send B

    expect C send D

    先来个例子

    #!/usr/bin/expect

    set timeout 5

    spawn ssh 192.168.2.38

    expect "password" {send "slk "}

    expect "Last login" {send " ls -l "}

    expect eof

    exit

    /usr/bin/expect是指明该脚本要调用expect

    set timeout 5,设置每个expect等待的时间,-1则为永不超时,在expect scp xxx xxx 的时候很好用,时间如果设太短,还没传完,expect就返回了。

    spawn 创建一个进程,执行ssh 192.168.2.38命令,然后下面就是expect 和send的命令对了。

    expect "password" {send "slk "}, 当出现“expect"的时候,发送,"slk ",必须要加 ,就和我们平时自己输秘密最后要加个 一样。

    expect可以不止一个,所以下面可以继续expect和send。如果要执行的命令有很多,可以不写那么多expect send,直接把命令写在另一个脚本里,expect "Last login" {send " ./do.sh "} 就好了,expect是为交互而存在的,在不需要交互的地方调用expect是浪费自己的时间。

     

  • 相关阅读:
    elasticsearch-head插件基本使用
    Windows包管理工具-Chocolatey
    php-fpm常用操作
    nginx之日志处理
    进程管理工具之supervisor(完整版)
    Elasticsearch之常见问题
    支付宝支付功能接入(PC)
    UnityWebRequest 高级API常用的操作
    UnityWebRequest
    logback中使用日期做为文件目录
  • 原文地址:https://www.cnblogs.com/yechanglv/p/6931106.html
Copyright © 2011-2022 走看看