博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
交互式命令 expect
阅读量:6178 次
发布时间:2019-06-21

本文共 1538 字,大约阅读时间需要 5 分钟。

shell尽管很强大。但是貌似无法完成交互式命令的操作,实例 ssh host 如果host而且该机没有加入信任。手动输入的时间需要password。

这样的情况下可以使用expect支持。

下面举个样例来说明expect的功能与使用:

功能:对集群各机器运行同样指令 如 集群ip 为 :192.168.6.1~192.168.6.10。须要在这10台机器上 同一时候 以tt用户登录 并运行 mkdir ttji_314命令。

首先 定义一个hostlist文件 :

192.168.6.1192.168.6.2192.168.6.3192.168.6.4192.168.6.5192.168.6.6192.168.6.7192.168.6.8192.168.6.9192.168.6.10

然后定义一个 expect脚本 完毕在单个机器运行命令:ssh_comm.sh

#!/usr/bin/expect				set host [lindex $argv 0]set command [lindex $argv 1]set password 123456set username ttset timeout 1send_user "connect to $host ...\n"spawn ssh -l $username $hostexpect "password:"send "$password\r"expect "#$"send "$command\r"expect "#$"send "exit\r"#interactexpect eof

几点说明 :

1 首行加上/usr/bin/expect

2 spawn: 后面加上须要运行的shell 命令
3 expect: 仅仅有spawn 运行的命令结果才会被expect 捕捉到,由于spawn 会启
动一个进程,仅仅有这个进程的相关信息才会被捕捉到。主要包含:标准输入的提
示信息,eof 和timeout。

4 send 和send_user:send 会将expect 脚本中须要的信息发送给spawn 启动
的那个进程,而send_user 仅仅是回显用户发出的信息,类似于shell 中的echo 而
已。
5.set timeout 1之后的指令将都等待1s。
最后完毕批量功能:command_all.sh
#!/bin/bashfunction use() {        echo "========================"        echo "./command_all.sh hostlist command"        echo "========================"}if [ $# != 2 ]        then                use        else                echo "welcome to use:\n"fifile=$1command=$2echo $fileecho $commandwhile read linedo    #echo $line    ./ssh_comm.sh $line "$command"done < $file
使用:
./command_all.sh hostlist "mkdir ttji_314"

有个问题:当在expect脚本中 使用root用户登录的时候 似乎没有timeout这样的概念 ,运行完命令马上返回;

而用普通用户才会有这样的体现。

若有了解的同学请留言不吝赐教,不胜感激~害羞

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
理论 | 朴素贝叶斯模型算法研究与实例分析
查看>>
docker安装gitlab只需要3分钟
查看>>
Android菜鸟学习js笔记 一
查看>>
Java基础之SPI机制
查看>>
使用js控制滚动条的位置
查看>>
【Tornado源码阅读笔记】tornado.web.Application
查看>>
lsyncd搭建测试
查看>>
移动web开发之像素和DPR
查看>>
nginx+tomcat+redis实现session共享
查看>>
UWP VirtualizedVariableSizedGridView 支持可虚拟化可变大小Item的View(二)
查看>>
rsync 介绍
查看>>
做一个合格的Team Leader -- 基本概念
查看>>
leetcode 190 Reverse Bits
查看>>
阿里巴巴发布AliOS品牌 重投汽车及IoT领域
查看>>
OPENCV图像处理(二):模糊
查看>>
glassfish4系统启动脚本
查看>>
VMware 虚拟化编程(13) — VMware 虚拟机的备份方案设计
查看>>
独家 | 一文读懂推荐系统知识体系-下(评估、实战、学习资料)
查看>>
UIEvent&amp;nbsp;UIResponder&amp;nbsp;UI_04
查看>>
从非GP到GP
查看>>