人机交互命令 expect
来源:互联网 发布:蓝月传奇英雄翅膀数据 编辑:程序博客网 时间:2024/04/30 09:47
shell虽然很强大,但貌似无法完成人机交互命令的执行,比如 ssh host 若host与本机并未添加信任,则需要手动输入一次密码。这种情况可以用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/expectset 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这种概念 ,执行完命令立即返回;
而用普通用户才会有这种体现。
若有了解的同学请留言指教,不胜感激~
0 0
- 人机交互命令 expect
- expect模拟伪终端来实现免人机交互
- expect命令详解
- expect 脚本 命令记录
- Linux-expect命令详解
- expect交互命令
- Linux命令之expect
- expect命令怎么用?
- expect命令使用
- 人机交互
- 人机交互
- 人机交互
- 人机交互
- MATLAB 人机交互(窗口)设置命令 (转载)
- Linux下 expect命令【安装】
- Linux下 expect命令【应用】
- scp命令与expect脚本
- spawn expect send 命令使用方法
- 49_leetcode_Longest Valid Parentheses
- 向量相似度度量(一):EMD (Earth Mover's Distance)
- 笔记
- socket中的TIME_WAIT状态
- makefile 的ifeq和ifdef的区别
- 人机交互命令 expect
- Windows下安装Hadoop
- Mac OS X上搭建本地SVN服务器
- 调试OMAPL138的GEL文件简析
- Codility2 FrogJump
- linux压缩和解压缩命令大全
- Java反射
- vmware 快照及克隆技术维护自己的虚拟机
- Hadoop集群安装设置