demo :expect与send
例子:在 node1上 执行test.sh 来调用node2上的 get_java_home.sh
1.在node1节点上 创建 test.sh
vi test.sh
添加以下内容:
#!/bin/bash
passW="AaBbCc"
/usr/bin/expect < <-EOF
spawn ssh root@10.10.10.21
set timeout -1
expect {
"yes/no" {send "yes ";exp_continue}
"assword:" {send "$passW "}
}
#识别 10.10.10.21节点上的 root用户的 $PS1 ,即命令行 "~ #",并键入相关命令
expect "~ #"
send "cd /tmp/test"
send "sh get_java_home.sh > /tmp/test/get_java_home.log "
send "exit/r"
expect eof
EOF
2.在node2节点上 创建 get_java_home.sh
mkdir -p /tmp/test
cd /tmp/test
vi get_java_home.sh
添加以下内容:
typeset user_name=test
typeset JAVA_HOME=`su - ${user_name} -c "env |grep -w JAVA_HOME"|awk -F= '{print $2}'`
typeset java_path="${JAVA_HOME}/bin/java"
echo JAVA_HOME=$JAVA_HOME,java_path=$java_path
3.获取 node2节点 上 root用户 的环境变量 $PS1
su - root
echo $PS1