Linux - expect自动化远程登录脚本
简单模式:
#!/usr/bin/expect -f
set timeout
spawn ssh root@192.168.0.1
expect "*assword*"
send "root\r"
expect "#"
send "ifconfig \r"
expect eof
讲解:
send:用于向进程发送字符串
expect:从进程接收字符串 比如:expect "*assword*"
spawn:启动新的进程
interact:允许用户交互
怎么使用变量:
#!/usr/bin/expect -f
set port
set user root
set host 192.168.0.12
set password root
set timeout -
spawn ssh -D $port $user@$host "ifconfig"
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*assword:" { send "$password\r" }
}
expect "*#*"
send "ifconfig > /home/cfg \r"
send "exit\r"
}
讲解:
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*assword:" { send "$password\r" }
}
选择模式,exp_continue表示继续。
通过读取配置文件获取变量:
配置文件
192.168.0.1 root
192.168.0.2 root
自动化登录脚本
#!/usr/bin/expect -f
set f [open ./ip r]
while { [gets $f line ]>= } {
set ip [lindex $line ]
set pwd [lindex $line ]
spawn ssh $ip
expect "*password:" { send "$pwd\r" }
expect "#"
send "ifconfig \r"
send "exit\r"
interact
}
讲解:
可以多台服务器循环执行,是个非常使用的方式!
自动化远程拷贝文件:
#!/usr/bin/expect -f
set port
set user root
set host 192.168.28.30
set password root
set timeout -
spawn scp $host:/home/cfg ./
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*assword:" { send "$password\r" }
}
expect eof
讲解:
原理和ssh一样
远程执行命令后写入文件,再通过scp到本机服务器:
#!/usr/bin/expect -f set port
set user root
set host 192.168.28.30
set password root
set timeout -
spawn ssh -D $port $user@$host "ifconfig"
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*assword:" { send "$password\r" }
}
expect "*#*"
send "ifconfig > /home/cfg \r"
send "exit\r"
interact
spawn scp $host:/home/cfg ./
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*assword:" { send "$password\r" }
}
expect eof
讲解:
自动化运维,远程交互从服务器A上ssh到服务器B上,然后执行服务器B上的命令。
http://www.cnblogs.com/Javame/p/4272440.html
Linux - expect自动化远程登录脚本的更多相关文章
- Linux Expect自动化交互脚本简介
相关资料 维基百科:Expect SourceForge:The Expect Home Page TCL脚本言语简介 由于Expect是建立在TCL语言基础上的一个工具,因此首先检查一些TCL常见语 ...
- expect脚本远程登录、远程执行命令和脚本传参简单用法
expect介绍: 最近想写一个自动化安装脚本,涉及到远程登录.分发文件包.远程执行命令等,其中少不了来回输入登录密码,交互式输入命令等,这样就大大降低了效率,那么有什么方法能解决呢?不妨试试expe ...
- 每次进步一点点——linux expect 使用
1. 介绍 expect是建立在tcl(参见:Tcl/Tk快速入门 )基础上的一个工具,它可以让一些需要交互的任务自动化地完成.相当于模拟了用户和命令行的交互操作. 一个具体的场景:远程登陆服务器,并 ...
- [转载]expect spawn、linux expect 用法小记
原文地址:expect spawn.linux expect 用法小记作者:悟世 使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写 ...
- Linux expect自动登录ssh,ftp
[http://blog.51yip.com/linux/1462.html#] #!/usr/bin/expect -f set ip 192.168.1.201 set password meim ...
- Linux 下 SSH 远程超时解决方案
Linux 下 SSH 远程超时解决方案 今天突然看到一个问题说是如何解决SSH远程超时的问题. 找了一点资料.用于解决这个需求~ 第一种:OpenSSH 配置文件设置 位于112行的 "C ...
- Shell编程之Expect自动化交互程序
一.Expect自动化交互程序 1.spawn命令 通过spawn执行一个命令或程序,之后所有的Expect操作都会在这个执行过的命令或程序进程中进行,包括自动交互功能. 语法: spawn [ 选项 ...
- linux的“自动化”
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- linux expect, spawn用法小记
linux expect, spawn用法小记_IT民工_百度空间 linux expect, spawn用法小记 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://sys ...
随机推荐
- iOS开发之SQLite-C语言接口规范(一)——Ready And Open Your SQLite
为什么要搞一搞SQLite的C语言接口规范呢? 因为在做iOS开发中难免会遇到操作数据库的情况,你可以使用第三方的FMDB等,或者使用CoreData.但我们还是有必要去搞清楚如何去使用SQLite的 ...
- geotrellis使用(二十)geotrellis1.0版本新功能及变化介绍
目录 前言 变化情况介绍 总结 一.前言 之前版本是0.9或者0.10.1.0.10.2,最近发现更新成为1.0.0-2077839.1.0应该也能称之为正式版了吧.发现其中有很多变化, ...
- 1Z0-053 争议题目解析510
1Z0-053 争议题目解析510 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 510.You executed the following command in Recover ...
- 1Z0-053 争议题目解析681
1Z0-053 争议题目解析681 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 681.The environmental variable ORACLE-BASE is set ...
- JS代码实现的聊天框
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java中写文件操作
OutputStream 和 Writer OutputStream类(直接操作byte数组) 该类是字节输出流的抽象类,定义了输出流的各种操作方法.如下图是OutputStream的层次结构: By ...
- jQuery-1.9.1源码分析系列(十五) 动画处理
首先需要有队列(queue)的基本知识.见上一章. a.动画入口jQuery.fn.animate函数执行流程详解 先根据参数调用jQuery.speed获取动画相关参数,得到一个类似如下的对象:并且 ...
- JS魔法堂:定义页面的Dispose方法——[before]unload事件启示录
前言 最近实施的同事报障,说用户审批流程后直接关闭浏览器,操作十余次后系统就报用户会话数超过上限,咨询4A同事后得知登陆后需要显式调用登出API才能清理4A端,否则必然会超出会话上限. 即使在页面 ...
- Xamarin.Android之Spinner的简单探讨
一.前言 今天用了一下Spinner这个控件,主要是结合官网的例子来用的,不过官网的是把数据写在Strings.xml中的, 某种程度上,不是很符合我们需要的,比较多的应该都是从数据库读出来,绑定上去 ...
- 从零开始编写属于我的CMS:(一)前言
一,项目背景 记得大学毕业课题,我就是选择做个CMS,不过当时虽然做了个,不过感觉不是很好,所以现在又重做了,顺便发上来供大家讨论的.虽然CMS不是什么特别的项目,但是还是想从一个普通项目学到更多的东 ...
