首页 > 代码库 > 利用expect远程控制相关脚本

利用expect远程控制相关脚本

exe_start_agent.sh

#!/bin/sh

FILENAME="ip.file"
cat $FILENAME|while read line
do
eval `echo $line|awk ‘{print "IP="$1}‘`
eval `echo $line|awk ‘{print "USER="$2}‘`
eval `echo $line|awk ‘{print "PATHWORD="$3}‘`
echo "$IP $USER $PATHWORD"

./start_agent.exp $IP $USER $PATHWORD
echo "start succuss"
done

 

exe_stop_agent.sh

 

#!/bin/sh

FILENAME="ip.file"
cat $FILENAME|while read line
do
echo $line
eval `echo $line|awk ‘{print "IP="$1}‘`
eval `echo $line|awk ‘{print "USER="$2}‘`
eval `echo $line|awk ‘{print "PATHWORD="$3}‘`
echo "$IP $USER $PATHWORD"

./scp.exp $IP $USER $PATHWORD
echo "scp success"
sleep 1
./ssh.exp $IP $USER $PATHWORD
echo "ssh success"
done 

ip.file

127.0.0.1 user password

scp.exp

#!/usr/bin/expect -f

set timeout 300
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]

spawn scp stop_agent.sh ${user}@${ip}:stop_agent.sh

expect {
"*yes/no*" { send "yes\r"; exp_continue}
"*password:" { send "$password\r" }
}
expect "*password:"

send "$password\r"

send "exit\r"

expect eof

 

ssh.exp

#!/usr/bin/expect -f

set timeout 30
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]


spawn ssh ${user}@${ip}
expect {
"yes/no" { send "yes\r"; exp_continue}
"*password:" { send "$password\r" }
}

expect {
"*$*" {
send "sh stop_agent.sh\r"
expect "*$*"
send "rm stop_agent.sh\r"
expect "*$*"
send "exit\r"
}
"*>*" {
send "sh stop_agent.sh\r"
expect "*>*"
send "rm stop_agent.sh\r"
expect "*>*"
send "exit\r"
}
}

expect eof

 

start_agent.exp

#!/usr/bin/expect -f

set timeout 30
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]


spawn ssh ${user}@${ip}
expect {
"yes/no" { send "yes\r"; exp_continue}
"*password:" { send "$password\r" }
}

expect {
"*$*" {
send "sh ~/agent/bin/agent_monitor.sh ~/agent/bin\r"
expect "*$*"
send "exit\r"
}
"*>*" {
send "sh ~/agent/bin/agent_monitor.sh ~/agent/bin\r"
expect "*>*"
send "exit\r"
}
}

expect eof

stop_bocs.sh

 

#!/bin/sh

cd agent/bin
echo "begin"
crontab_bocs=`crontab -l |grep -w "agent" |grep -w "agent_monitor.sh"|grep -v grep |wc -l`
if [ "${crontab_bocs}" != "0" ]
then
crontab -l > crontab_bocs.list
sed ‘/agent\/bin\/agent_monitor.sh/‘d crontab_bocs.list >list.list
crontab list.list
rm crontab_bocs.list
rm list.list
fi
sh stop.sh
rm ../output/*
echo "end"

利用expect远程控制相关脚本