linux使用expect实现自动批量登录后执行指定命令
- 可实现由a服务器自动登录b服务器(交互模式下,没有批量功能)
- 批量登录后处理某些特定重复任务
安装expect
yum -y install expect
创建login.exp
文件
- 单独使用方式:
expect autoSshLogin.exp $ip "$pwd"
#!/usr/bin/expect -f
set timeout 30
set _ip [lindex $argv 0]
set _user [lindex $argv 1]
set _pwd [lindex $argv 2]
spawn ssh $_user@$_ip
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "$_pwd\r" }
}
interact
# 最后的interact为等待用户自行交互。如无需交互,执行完后立即登出,则可替换成其他命令,如执行创建文件夹等
# 示例:
## expect "*from*"
## send "mkdir -p ./tmp/testfile\r"
## #send "exit\r"
## expect "#"
# 交互模式下,可实现
创建批量自动执行脚本batchExec.sh
#!/bin/bash
for i in `awk '{print $1}' loginInfo.txt`
do
j=`awk -v I="$i" '{if(I==$1)print $2}' loginInfo.txt`
k=`awk -v I="$i" '{if(I==$1)print $3}' loginInfo.txt`
expect login.exp $i $j $k
done
创建loginInfo.txt
文件
10.0.0.3 root pass
最后使用
sh batchExec.sh
即可