Linux expect介绍和用法
expect工具主要用于在linux上免交互实行程序。
1. 安装expect
# yum install expect -y
2. expect用法
expect常用选项
-c 从命令行执行expect脚本,默认expect是交互地执行的
expect常用命令
spawn 交互程序开始后面跟命令或者指定程序 expect 获取匹配信息匹配成功则执行expect后面的程序动作 send 用于发送指定的字符串信息 exp_continue 在expect中多次匹配就需要用到 send_user 用来打印输出 相当于shell中的echo exit 退出expect脚本 eof expect 执行结束 退出 set 定义变量 puts 输出变量 set timeout 设置超时时间
3. expect脚本示例
1. ssh免交互跨主机执行命令
vim myssh.sh
#!/bin/bash
ip=192.168.6.215
user=root
password=123456
cmd="ifconfig"
function myssh(){
(
expect -c "
spawn ssh $user@$ip $cmd
set timeout 60
expect {
\"Are you sure you want to continue connecting (yes/no)?\" { send \"yes\n\" }
\"*password:\" { send \"$password\n\" }
}
expect eof
"
)
}
myssh
2. scp免交互跨主机拷贝文件
vim myscp.sh
#!/bin/bash
ip=192.168.6.215
user=root
password=123456
src_file=./date.txt
dest_path=/tmp/
function myscp(){
(
expect -c "
spawn scp $src_file $user@$ip:$dest_path
set timeout 60
expect {
\"Are you sure you want to continue connecting (yes/no)?\" { send \"yes\n\" }
\"*password:\" { send \"$password\n\" }
}
expect eof
"
)
}
date > ./date.txt
myscp
3. ftp免交互上传或下载文件
vim myftp.sh
#!/bin/bash
ip=172.28.6.215
username=root
password=123456
src_file=./date.txt
dest_path=/tmp/
function myscp(){
(
expect -c "
spawn ftp $ip
set timeout 60
expect \"Name\"
send \"$username\n\"
expect \"Password:\"
send \"$password\n\"
expect \"ftp>\"
send \"bin\n\"
expect \"ftp>\"
send \"put date.txt\n\"
expect \"ftp>\"
send \"ls\n\"
expect \"ftp>\"
send \"bye\n\"
expect eof
"
)
}
date > ./date.txt
myscp
欢迎各位光临郭小波的博客,请在此留下您的脚印。

浙公网安备 33010602011771号