expect脚本
#!/bin/bash
# Filename: main.sh usage(){
echo "scp file :./main.sh scp sourcefile destfile"
echo "ssh exec: ./main.sh ssh command"
} file=iplist.txt
#password='fengmao'
case $ in
"scp") for ip in `cat $file`; do
./scp.exp $ip $ $
done
;;
"ssh")
for ip in `cat $file`;do
./ssh.exp $ip "$2"
done
;;
*)
usage
;;
esac
ssh。exp
#!/usr/bin/expect -f set ipaddr [lindex $argv ]
set command [lindex $argv ]
#set passwd [lindex $argv ]
set passwd test
set timeout
spawn ssh root@$ipaddr
expect {
"yes/no" {send "yes\r"; exp_continue}
"password:" { send "$passwd\r"}
}
expect {
# "#*" {send "apt-get install snmp-mibs-downloader -y\r"}
"#*" {send "$command\r"; send "exit\r" }
} expect eof
scp.exp
#!/usr/bin/expect -f set timeout
set host [lindex $argv ]
set src_file [lindex $argv ]
set dest_file [lindex $argv ]
set username root
set password test
spawn scp $src_file $username@$host:$dest_file
expect {
"(yes/no)?"
{
send "yes\n"
expect "*assword:" { send "$password\n"}
}
"*assword:"
{
send "$password\n"
}
}
expect "100%"
expect eof
iplist
192.168.0.201
192.168.0.202
192.168.0.203
192.168.0.204
192.168.0.205
192.168.0.206
192.168.0.207
192.168.0.208
192.168.0.209
192.168.0.210
192.168.0.211
192.168.0.212
192.168.0.213
192.168.0.214
192.168.0.215
192.168.0.216
192.168.0.217
192.168.0.218
192.168.0.219
192.168.0.220
192.168.0.221
192.168.0.222
192.168.0.223
192.168.0.224
192.168.0.225
192.168.0.226
192.168.0.227
http://wangxu.me/blog/p/tag/exp_continue
exp_continue心得。
“expect 的匹配可以看做是一个循环,通常匹配之后都会退出语句,但如果有 exp_continue 则可以不断循环匹配,输入多条命令 - See more at: http://wangxu.me/blog/p/tag/exp_continue#sthash.hiiDHL2Z.dpuf”
这也是为什么在第二个脚本中加入send "exit\r",如果不加它会循环。
expect脚本的更多相关文章
- shell脚本嵌套expect脚本
#!/bin/sh echo "helo" password='xxxx' ###不能在下面的expect脚本段设置成 set password xxxx否则获取不到变量,单独的e ...
- 使用expect脚本语言写一键发布服务(代码发布、所有服务重启)
互联网服务有很多台服务,但是在上线的时候需要将这些服务版本都更新与个个都重启,下面的脚本语言,就是一键发布服务~ 1.在/home/weihu/deploy/ 目录下建下publish .publis ...
- Linux 下 expect 脚本语言中交互处理常用命令
Linux 下 expect 脚本语言中交互处理常用命令 1. #!/usr/bin/expect 告诉操作系统脚本里的代码使用那一个 shell 来执行.这里的 expect 其实和 Linux 下 ...
- Mac 让 iTerm2 记住用户名密码 expect 脚本
刚刚用iTerm2的时候,总是要一遍遍的敲用户名.密码. 我在想, 能不能像Windows的软件一样,可以直接让软件记住.然后只要点击一下,就直接ssh到远程服务器上面去了. 之后经过搜索,可以用ex ...
- expect脚本同步文件 expect脚本指定host和要同步的文件 构建文件分发系统 批量远程执行命令
自动同步文件 #!/usr/bin/expect set " spawn rsync -av root@.txt /tmp/ expect { "yes/no" { se ...
- 分发系统介绍 expect脚本远程登录 expect脚本远程执行命令 expect脚本传递参数
expect脚本远程登录 yum install -y expect yum install -y tcl tclx tcl-devel 自动远程登录 #! /usr/bin/expect set h ...
- 与服务器同步工程(expect脚本)
先看下我实际用的例子: #!/usr/bin/expect spawn rsync -vazu ssh-src/src wayne@192.168.5.2:~/projects/ expect &qu ...
- shell脚本通过expect脚本实现自动输入密码(使用expect)
背景:在远程文件下载时,需要输入对方的服务器密码,shell不支持交互输入内容,可以用下面两种方式实现 一.在shell脚本中嵌入expect来实现密码输入 expect是一个自动交互功能的工具. ...
- shell脚本通过expect脚本实现自动输入密码
背景:在远程文件下载时,需要输入对方的服务器密码,shell不支持交互输入内容,可以用下面两种方式实现 一.在shell脚本中嵌入expect来实现密码输入 expect是一个自动交互功能的工具 ...
- 容易忽略的expect脚本问题,暗藏的僵尸进程,wait命令不要漏掉
问题描述 前几天有个小需求,用到expect脚本去循环的发送一些数据,主要问题代码如下: #! /usr/bin/expect while {true} { set timeout 60 spawn ...
随机推荐
- C# 事务处理
前言: 通常SqlHelper类为了方便处理,做成了静态类,静态类的问题是不方便添加事务处理. 实例化类方便添加事务处理,DoTrans/CommitTrans/RollBackTrans 三个函数 ...
- javaSE第十五天
第十五天 117 1. 对象数组(掌握) 117 (1)定义: 117 (2)对象数组的内存图解 117 (3)案例: 117 2. 集合(Collection)(掌握) ...
- 在信号处理函数中调用longjmp
错误情况及原因分析 前两天看APUE的时候,有个程序要自己制作一个sleep程序,结果在这个程序中就出现了在信号处理函数中调用longjmp函数的情况,结果就出现了错误,具体错误是啥呢,请参见下面这段 ...
- POJ C程序设计进阶 编程题#1:分配病房
编程题#1:分配病房 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 某个科 ...
- 转载:T-SQL语句大全
一.基础 1.创建数据库 CREATE DATABASE database-name 2.删除数据库 drop database dbname 3.备份数据库 --- 创建 备份数据的 device ...
- 如何在Word表格中的某一栏添加背景颜色
如何在Word表格中的某一栏添加背景颜色 编写人:CC阿爸 2014-3-14 用鼠标选中某一个单元格然后右键单击 下拉菜单选择.<边框和低纹>然后点<低纹>选项卡 选中色卡 ...
- 大数据实践:ODI 和 Twitter (一)
本文利用twitter做为数据源,介绍使用Oracle大数据平台及Oralce Data Integrator工具,完成从twitter抽取数据,在hadoop平台上处理数据,并最终加载到oracle ...
- mysql实体关系(mysql学习五)
实体关系 表设计 1:1 两个实体表内,存在相同的主键字段 如果记录的主键值等于另一个关系表内记录的主键值,则两条记录的对应为一一对应 优化上称为垂直分割 1:n 一个实体对应多个其他实体(一个班级 ...
- ajax使用。
<script> function createAjax(){ var request=false; //window对象中有XMLHttpRequest存在就是非IE,包括(IE7,IE ...
- js代码优化
1.减少Jquery使用 处理dom遍历和复杂的脚本场景时,jquery可能有很大的帮助,不过在处理简单的.直截了当的代码场景就会迟缓.尽可能的避免jquery对象创建,尤其在循环中. 2.优化循环 ...