自动化脚本登录跳板机和服务器
2016-08-14 21:46
232 查看
背景介绍
工作中需要登录跳板机和服务器去部署程序,或者是查看项目程序运行状态,避免出现服务不可用的情况。由于登录服务器需要输入多次密码,且还需要二次验证,比较麻烦,采用expect脚本程序可以实现自动化的登录。Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect安装和语法介绍
安装
在MAC系统中,安装expect可以通过如下命令:brew install expect
语法
类似其他shell脚本,第一句都是用来声明解释器,即expect在电脑上安装的位置。#!usr/bin/expect
设置环境变量和参数
set timeout 5
set server your_server_address
set port your_server_port
set password your_password
set username your_user_name
执行命令
spawn ssh -p $port $username@$server
spawn用于在expect中执行命令,其中$port是取port中的值,即通过set命令设置的值。
预料返回值
expect "Password:"
通过expect命令,即判断上次输入之后的返回值是否含有上述字符内容,进行匹配双引号内部的字符。
输入值
send "$password\r"
通过send命令就可以实现程序自动输入密码,其中$password也是取之前set的password的值,\r则是标识回车操作的意思。
其他
若还需要继续预测返回值,可以采用如下命令:
exp_continue
若执行自动登录后,默认会直接退出,不会留在远程的服务器上。若需要获得控制权,可以在脚本代码后添加这句:
interact
执行expect脚本时可以输入一些命令行参数,然后在脚本程序中使用这些参数,其中0表示第1个参数
[lindex $argv 0]
简单示例
通过跳板机,两步验证登录服务器,示例代码如下:!/usr/bin/expect set timeout 5 set jump server 127.0.0.1 set port 8080 set username test set userpasswd test set VerifyCode [lindex $argv 0] spawn ssh -p $port $username@$jumpserver expect { "*assword:" { send "$userpasswd\r"; exp_continue } "Verification code" {send "$VerifyCode\r"} } interact
假定上面脚本文件名称为test.sh,另外二步验证码为12345,保证test.sh脚本有可执行权限,若不行,需通过chmod命令添加可执行权限。执行命令如下:
./test.sh 12345
参考文献
[1]http://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html[2]http://blog.csdn.net/ljchlx/article/details/44221413
相关文章推荐
- 登录 SSHD 服务器的自动化脚本
- 跳板机登录服务器脚本及命令制作
- shell脚本trap信号和服务器跳板机,mysql自动化脚本,检测主从复制
- 通过跳板机自动登录服务器脚本
- 免密码登录服务器python脚本
- SecureCRT通过脚本实现自动化登录
- SecureCRT通过脚本实现自动化登录
- 【软件自动化测试-QTP实战技能 14】== 自动化测试思想之QTP登录脚本
- Shell脚本学习(二)制作SSH登录远程服务器的Shell脚本
- Unix限制重复IP登录服务器的脚本。
- window和linux命令交互之--android镜像自动化编译,通过windows的bat脚本控制ubuntu编译服务器编译镜像
- 第一个shell脚本-监测恶意登录远程服务器
- Shell脚本监控服务器pts登录情况记录为日志并邮件通知【CentOS 6.5】
- 用expect实现的自动登录到多台服务器的shell脚本
- (阿里巴巴)服务器简单磁盘自动化脚本
- 服务器自动化安装脚本
- Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题
- secureCRT使用心得---自动登录服务器,自动执行脚本及自动
- linux下使用脚本自动登录远程服务器 - Python - language - ITeye论坛
- 孙本新 ssh远程登录多台服务器执行其上脚本_多进程版本