当前位置: 首页 > news >正文

expect脚本自动化地执行linux环境下的命令行交互任务

expect命令安装

  • Ubuntu/Debian系统:sudo apt-get install expect
  • Redhat/Centos系统:sudo yum install expect -y 

expect脚本使用

expect用于自动化地执行linux环境下的命令行交互任务,例如scp、ssh之类需要用户手动输入密码然后确认的任务。有了这个工具,定义在scp过程中可能遇到的情况,然后编写相应的处理语句,就可以自动地完成scp操作了。

此处以scp交互命令的脚本示例:

#!/usr/bin/expect  
set timeout 10
# 获取日期与shell脚本获取方式不同
set DAY_Y [exec date +%Y%m%d]
set host [lindex $argv 0]  
set username [lindex $argv 1]  
set password [lindex $argv 2]  
set src_file [lindex $argv 3]  
set dest_file [lindex $argv 4]  
spawn scp $src_file $username@$host:$dest_file  expect {  "(yes/no)?"  {  send "yes\n"  expect "*assword:" { send "$password\n"}  }  "*assword:"  {  send "$password\n"  }  
}  
expect "100%"  
expect eof

代码刚开始的第一行,指定了expect的路径,与shell脚本相同,这一句指定了程序在执行时到哪里去寻找相应的启动程序。代码刚开始还设定了timeout的时间为10秒,如果在执行scp任务时遇到了代码中没有指定的异常,则在等待10秒后该脚本的执行会自动终止。

    从以上代码刚开始的几行可以看出,我为这个脚本设置了5个需要手动输入的参数,分别为:目标主机的IP、用户名、密码、本地文件路径、目标主机中的文件路径。如果将以上脚本保存为expect_scp文件,则在shell下执行时需要按以下的规范来输入命令:

./expect_scp 192.168.10.21 root 123456 /root/src_file /root/dest_file 

以上的命令执行后,将把本地/root目录下的src_file文件拷贝到用户名为root,密码为123456的主机192.168.10.21中的/root下,同时还将这个源文件重命名为dest_file。

    spawn代表在本地终端执行的语句,在该语句开始执行后,expect开始捕获终端的输出信息,然后做出对应的操作。expect代码中的捕获的(yes/no)内容用于完成第一次访问目标主机时保存密钥的操作。有了这一句,scp的任务减少了中断的情况。代码结尾的expect eof与spawn对应,表示捕获终端输出信息的终止。

    使用expect需要了解的一点是:用expect速度会比较慢,因为需要等待返回的数据,然后输入命令执行,没有ssh密钥登录的快速。

    安全性和速度上考虑建立信任关系都是最佳的方法,至于在具体的环境中选择什么根据实际情况来选择。

http://www.jsqmd.com/news/283748/

相关文章:

  • 2026链板提升机市场盘点:哪些企业值得信赖,密封输送机/大倾角输送机/全封闭输送机/上料提升机,提升机实力厂家联系电话
  • 收藏备用|Java程序员转型AI大模型指南:从入门到实战
  • 8.5 进阶实战:Thanos 高可用架构与多租户监控方案落地
  • 8.4 告警策略:Alertmanager 配置指南与告警降噪最佳实践
  • 深聊包饺子要放什么调料更香,鸿禄食品调味品选哪家好?
  • 【2026】 LLM 大模型系统学习指南 (15)
  • 告别选择困扰!为您推荐国内符合国标的高低温拉力试验机实力厂家!
  • 9.1 永不宕机三板斧:探针、资源配额与弹性伸缩的协同作战
  • 收藏!大模型赛道全指南:就业竞争力打造+保研路径规划(2026小白必看)
  • 深度收藏:从大厂JD看AI Agent开发学习路线,从小白到大厂必备技能
  • 2026年辽宁裁断机生产厂家排行榜,前十强都有谁?
  • 2026口碑好的关务咨询机构有哪些?行业精选推荐
  • 收藏备用!一文搞懂RAG与Agentic RAG:大模型进阶必备知识
  • 2026年靠谱的小区保安公司高评价榜排名
  • 2026年搅拌装备资深厂商排名,双月环保实力上榜!
  • 基于STM32单片机消防小车灭火机器人防撞温度烟雾火灾APP设计S380(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 快递打包机推荐厂商哪家好,华领机械值得考虑?
  • 青岛研究生留学中介口碑排名:哪家申请成功率高?专业推荐在此
  • 泉州最好的研究生留学中介,申请成功率高,服务全面专业可靠
  • 2026年北京潘家园知名的儿童眼镜店排行榜,至美上品儿童视光中心在列!
  • 基于STM32单片机两轮自平衡小车PID控制锂电池陀螺仪APP设计S376(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • java_ssm78服装销售商城时装管理系统_idea项目源码
  • 化工鼓风机生产厂家怎么选择,瑞恒专业服务解你忧
  • 基于STM32单片机智慧小区图像AI人脸识别门禁系统流量检测设计178(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • java_ssm79校内二手交易商城管理系统_idea项目源码
  • Keepalived 深度解析:原理、编译安装与高可用集群配置
  • 基于STM32单片机智能鱼缸鱼塘养殖系统增氧喂食换水浑浊设计S195(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 2026中国DevSecOps市场全景:安全左移催生国产化工具链崛起
  • 基于STM32单片机金属探测器涡流传感器语音播报分拣无线设计S224(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 2026年项目管理工具TOP10:Gitee以技术驱动重塑研发协作生态