后端开发中会经常使用一些重复性的命令,比如项目部署,文件同步等,每次都要执行一堆相同的命令,这些重复性的工作完全可以用脚本来代替。
expect是基于TCL的相对简单的一个免费的脚本编程工具语言,用来实现自动和交互式任务程序语言进行通信,无需人工干预。
一般expect的工作流程是:spawn启动进程 --> expect期待关键字 --> send向进程发送字符 --> 退出结束。
首先安装expect:
sudo apt install expect
举个栗子:
#! /usr/bin/expect
set timeout -1 # 设置超时时间
set src [lindex $argv 0] # 获取输入参数
spawn rsync -av root@171.12.212.12:$src /mnt/hgfs/e/Downloads/rsync # 开启一个进程执行rsync语句
expect "root@171.12.212.12" # expect匹配rsync的返回结果
send "xxxxxx\r" # 匹配到expect就执行发送动作,相当于交互下的输入密码,\r为输入密码后回车
expect eof # 匹配结束符
exit # 退出
常用命令:
# 命令行参数
# $argv,参数数组,使用[lindex $argv n]获取,$argv 0为脚本名字
# $argc,参数个数
set username [lindex $argv 1] # 获取第1个参数
set passwd [lindex