首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

bash 脚本中嵌入 expect

在 中执行一些命令时总是需要交互式的输入信息,如 等等,这可以起到提醒用户的作用,也更加保险。...由于 并没有默认安装,所以需要先安装: sudo apt install expect 另外因为 脚本有专用的解释器,所以在脚本的第一行不是: #!/bin/bash 而是: #!.../usr/bin/expect -f 如此一来,我们需要将用到交互式操作的命令均抽离出来分别写脚本,这样无疑会造成麻烦,如果交互式的命令很多时,会需要写很多脚本。...因此需要想办法将 脚本嵌入到 脚本中。 在执行 脚本时有三种方法,第一种: ./bash_script.bash 这要求脚本有可执行权限并且第一行是: #!.../bin/bash expect_tmp() { expect -c " set timeout 10 spawn cmd ...

2.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    expect脚本中设置超时,比如下面的脚本

    文件expect_ssh_scp.sh #!...我看到一种解释是:代码刚开始设定了timeout的时间为10秒,如果在执行scp任务时遇到了代码中没有指定的异常,则在等待10秒后该脚本的执行会自动终止。这样理解对吗?...干嘛要这个超时限制啊,感觉很影响程序的效率,在执行过程中遇见问题就返回问题信息,退出不就好了么,就算多给10秒,还不是没法解决。...就好比Java中的异常处理机制,遇见异常就,throw  catch处理嘛,然后程序继续执行,这样多好, 如果某一个方法非常耗时,那么就等它执行完呗,就算有一天,出现无限循环这种永远的执行不完的方法...,设定一个超时,这样的逻辑感觉不对吧,出现无穷循环的问题明显是设计的问题

    2.9K30

    Linux expect 自动交互脚本用法

    最近用到自动交互脚本进行数据库备份,以前虽然也有用来使用 ftp 远程获取文件,还来没有系统记录过,趁这次机会总结一下。...expect自动交互流程: spawn启动指定进程 expect获取指定关键字 send向指定程序发送指定字符 执行完成退出. 注意该脚本能够执行的前提是安装了 expect。...在expect中多次匹配就需要用到 send_user 用来打印输出 相当于shell中的echo exit 退出expect脚本 eof...expect执行结束 退出 set 定义变量 puts 输出变量 set timeout 设置超时时间 使用示例 下面以我最近使用的脚本来一行行进行分析..."${user}@${ip}'s password:" # 发送内容pass,类似于我们使用时输入密码,将该步骤交给脚本完成 send "${pass}\r" # 执行完成后自动退出 expect eof

    1.8K30

    expect 实现脚本的自动交互

    expect 是建立在 tcl 语言基础上的一个自动化交互套件, 在一些需要交互输入指令的场景下, 可通过脚本设置自动进行交互通信。...可以将交互过程如:ssh 登录、ftp 登录、scp 复制文件等写在一个脚本上,使之自动化完成。尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率。...# send 和 send_user:send 会将 expect 脚本中需要的信息发送给 spawn 启动的那个进程,而 send_user 只是回显用户发出的信息,类似于 shell 中的 echo...expect 实例 自动拷贝 scp scp 远程复制文件(夹)涉及到很多交互式命令,我们不得不人工响应,expect 的出现解决了这个问题,实例脚本如下。...参考资料 expect自动交互详解 Ubuntu使用Spawn和expect实现ssh自动登陆 Linux中通过expect工具实现脚本的自动交互

    1K31

    Shell脚本和expect实现自动交互

    expect介绍 expect是一个自动交互功能的工具,可以满足代替我们实际工作中需要从终端手动输入某些内容来使得程序或命令继续运行的目的。...如安装软件是时的一些提示,ssh远程主机执行命令时需要多次输入密码的情况 expect主要命令 spawn 启动新进程,用于执行shell命令 send 发送字符串给expect控制的进程 set...永远等待 set timeout 10 设置超时时间 10秒 interact 将脚本的控制权交给用户,用户继续使用shell执行命令 $argv expect 脚本可以接受从bash传递过来的参数...安装expect yum install expect 免密码通过SSH登录服务器 [root@linux /]# vim ssh.exp #!.../usr/bin/expect set ip "172.16.0.8" set user "root" set pwd "123456" spawn ssh $user@$ip expect { "

    1.5K30
    领券