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.1
192.168.6.2
192.168.6.3
192.168.6.4
192.168.6.5
192.168.6.6
192.168.6.7
192.168.6.8
192.168.6.9
192.168.6.10

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

#!/usr/bin/expect
set host [lindex $argv 0]
set command [lindex $argv 1]
set password 123456
set username tt
set timeout 1 send_user "connect to $host ...\n"
spawn ssh -l $username $host expect "password:"
send "$password\r" expect "#$"
send "$command\r" expect "#$"
send "exit\r" #interact
expect 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/bash

function use() {
echo "========================"
echo "./command_all.sh hostlist command"
echo "========================"
} if [ $# != 2 ]
then
use
else
echo "welcome to use:\n"
fi file=$1
command=$2 echo $file
echo $command while read line
do
#echo $line
./ssh_comm.sh $line "$command"
done < $file

使用:

./command_all.sh hostlist "mkdir ttji_314"

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

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

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

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

交互式命令 expect的更多相关文章

  1. expect入门--自动化linux交互式命令

    很多linux程序比如passwd,ftp,scp,ssh等自身并没有提供一种静默式的执行选项,而是依赖于运行时的终端输入来进行后一步的操作比如更改密码.文件上传.下载等.虽然有些编程语言如java嵌 ...

  2. 两种Linux下非交互式命令的实现

    一.概述 在Linux环境,有多种实现自己主动化的脚本语言.如Shell.Python.Perl.Tcl等. Shell语言因与Shell外壳结合紧密,是最常见的实现自己主动化的脚本语言. 同一时候, ...

  3. [转帖]自动交互式脚本--expect

    自动交互式脚本--expect https://www.cnblogs.com/zhuiluoyu/p/4873869.html 我们经常会遇到一些需要与服务器程序打交道的场景,比如,从登陆某个服务器 ...

  4. Linux远程ssh执行命令expect使用及几种方法

    expect命令实现脚本免交互 一.Linux下SSH无密码认证远程执行命令 在客户端使用ssh-keygen生成密钥对,然后把公钥复制到服务端(authorized_keys). 实现步骤: 1.客 ...

  5. python 交互式命令行数据库连接助手 -- mysql、sql server (mssql)、redis

    目录 python 交互式命令行数据库连接助手 0. 操作示例 1. python 连接mssql 2. python 连接mysql 3. python 连接redis n. Tips python ...

  6. Gitbash如何支持交互式命令?如何让gitbash的命令不乱码?winpty是什么鬼?干嘛用的?

    winpty 是一个 Windows 软件包,提供了类似 Unix pty-master 一样的接口,用于实现控制台程序之间的通讯.该软件包包括一个开发库 (libwinpty) 和一个用于 ygwi ...

  7. Spark-Unit2-Spark交互式命令行与SparkWordCount

    一.Spark交互式命令行 启动脚本:spark-shell 先启动spark:./start-all.sh 本地模式启动命令:/bin/spark-shell 集群模式启动命令:/bin/spark ...

  8. 解决php的交互式命令行不能正常启动的问题兼介绍psysh

    今天在自己的mac电脑上试着启动php的交互式命令行,发现敲下命令后一直卡在提示进入的地方,但没有出现已经进入的提示符,百度了下应该是与readline有关. 于是安装php的readline扩展,在 ...

  9. 自动交互式脚本--expect

    我们经常会遇到一些需要与服务器程序打交道的场景,比如,从登陆某个服务器,然后进行某项工作.这很平常,但是如果把这个工作自动化进行,你就需要一个程序能自动做你要告诉机器的事情,这样,我们的expect就 ...

随机推荐

  1. ZooKeeper场景实践:(2)集中式配置管理

    1. 基本介绍 在分布式的环境中,可能会有多个对等的程序读取相同的配置文件,程序能够部署在多台机器上,假设配置採用文件的话,则须要为部署该程序的机器也部署一个配置文件,一旦要改动配置的时候就会很麻烦, ...

  2. Spring实战笔记2---Bean的装配

    创建应用对象之间协作关系的行为通常成为装配,该篇的主要内容有两个,一个Spring装配Bean的几种方式以及Spring表达式,事实上这两者是分不开的,在Spring中,对象无需自己负责查找或者创建与 ...

  3. Android中callback(接口回调)机制

    事实上,callback 机制在Android 中无处不在,特别是以Handler.Callback.Listener这三个词结尾的,都是利用callback机制来实现的.比方点击事件onClickL ...

  4. html学习 - 自己主动跳转与自己主动刷新

    自己主动刷新 事实上自己主动刷新和跳转没啥差别,刷新就是跳转到本地址. 有几种办法,首先是直接在html的<head>标签里加入以下的代码. html代码 代码都放在<head> ...

  5. 简单fcgi程序

    1.头文件 #include <fcgi_stdio.h> 2.while(FCGI_Accept()>=0)//这里进入循环,前台每请求一次fcgi服务,就循环一次 循环内处理: ...

  6. SVN 右下角各种符号

    黄色感叹号(有冲突): --这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不 允许你提交,防止你的提交覆盖了 ...

  7. Android 解决Gallery下ScrollView滑动事件冲突

    在Gallery下,里面内容过长超出屏幕,这时我们可以用ScrollView来滚动,但是这样做了以后,会发现一个问题,Gallery的滑动事件和ScrollView的滑动事件起冲突,这时我们可以自定义 ...

  8. AMD宣布裁员7% 约710员工将失去工作

    10 月 17 日.美国芯片生产商 AMD 周四宣布将裁员7%.并公布了不及预期的第四季度业绩展望.这将是 AMD 自 2011 年以来的第三轮大裁员. 就在一周之前,AMD 宣布罗瑞德(Rory R ...

  9. JAVA 数据权限设计

    数据权限设计 前言 在各种系统中.要保证数据对象的安全性以及易操作性,使企业的各业务部门.职能部门可以方便并且高效的协同工作,那么一个好的数据权限管理设计就成为一个关键的问题.尽管企业中各个单元的工作 ...

  10. HDU 4360 As long as Binbin loves Sangsang spfa

    题意: 给定n个点m条边的无向图 每次必须沿着LOVE走,到终点时必须是完整的LOVE,且至少走出一个LOVE, 问这样情况下最短路是多少,在一样短情况下最多的LOVE个数是多少. 有自环. #inc ...