前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux expect用法介绍

Linux expect用法介绍

作者头像
瑾诺学长
发布2020-08-13 11:21:01
5K0
发布2020-08-13 11:21:01
举报
文章被收录于专栏:专注研发专注研发专注研发

1.expect是linux中一个交互命令,一般在 /usr/bin/expect路径下,如果该路径未加入到环境中需要先添加,其作用场景常用于交互执行输入指令

常用命令:
expect              获取上一命令执行后的返回信息,如果匹配成功 则执行后续操作
spawn               交互程序开始后面跟命令
set                 定义变量
puts                输出变量
set timeout         设置超时时间
send               用于发送字符串或者命令
exit                退出expect脚本
eof                 expect执行结束 退出
interact            结束

2.实例

需求1描述:在没有ssh密钥认证时,scp远程复制到目标主机需要每次输入密码,这里使用expect免去手动输入密码的操作

主流程脚本:

#!/bin/sh
expect /home/sendUtil.sh 参数1  参数2  参数3  参数4
远程复制scp脚本:
#!/usr/bin/expect
#获取参数并设置局部变量
set timeout  15
set BASE_PATH [lindex $argv 0]
set FILE_NAME [lindex $argv 1]
set IP [lindex $argv 2]
set TARGET_PATH [lindex $argv 3]
#执行scp操作
spawn scp -P 16022 ${BASE_PATH}/target/$FILE_NAME  user@$IP:$TARGET_PATH
#匹配到输入密码提示
expect "\*assword\*"
#发送密码
send "Password\r"
#结束交互
interact

需求1描述:在没有ssh密钥认证时,sftp到远程主机,切换到指定目录,并将目录下所有文件下载到本地

主脚本和上面一样

 sftp脚本:

#!/usr/bin/expect
spawn sftp -oPort=16022 sftp@192.168.12.32
expect "\*assword\*"
send "Password\r"
expect "\*sftp\*"
send "cd /user/download\r"
expect "\*sftp\*"
send "get -r *\r"
interact
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档