娃哈哈好喝-真的!
技术够用就行,吃好喝好睡好!

shell脚本实现交互功能

测试系统:centos7

实现交互功能要使用到这个工具:expect,如果系统没有这个命令可以使用yum安装

1、expect脚本示例:ssh连接其他服务器

#!/usr/bin/expect
#设置超时时间,表示连接上目标机器后多久没响应会退出
#set timeout 2
set host "172.2.2.16"
set username "root"
set password "1234@abcd"

#执行ssh命令
spawn ssh $username@$host

#如果遇到*yes*结尾的行就输入yes,后面要以\r结束
expect "*yes*" {send "yes\r"}
#如果遇到*password*结尾就输入设置好的密码,后面要以\r结束
expect "*password*" {send "$password\r"}
#这是在等待命令输入的时候需要在目标机器执行的指令,同样以\r结束
expect "*]*" {send "pwd\r"}
expect "*]*" {send "ps -ef|grep sh\r"}
#如果所有指令都执行完毕可以直接执行退出指令,而不用等待timeout超时再推出
expect "*]*" {send "exit\r"}
expect eof

2、shell中嵌套expect

#!/bin/bash
host="172.2.2.16"
username="root"
password="1234@abcd"
name="test.sh"
dir="/root/"

#嵌套expect脚本
/usr/bin/expect <<-EOF
#先执行文件远程拷贝
spawn scp ${dir}${name} $username@${host}:/home/yunwei
expect {
"*yes/*" { send "yes\r"; exp_continue }
"*password*" { send "$password\r" }
}
#再连上远程主机修改文件权限
spawn ssh $username@${host}
expect {
"*yes/*" { send "yes\r"; exp_continue }
"*password*" { send "$password\r" }
}
expect "*]*"
#修改文件权限
send "chown yunwei.yunwei /home/yunwei/${name}\r"
send "exit\r"
expect eof
EOF
echo "done"
赞(0)
未经允许不得转载:娃哈哈好喝 » shell脚本实现交互功能
分享到: 更多 (0)