利用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"

时间: 2024-08-28 10:47:39

利用expect远程控制相关脚本的相关文章

【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)

转载自:http://www.himigame.com/iphone-cocos2dx/1354.html 首先说明一个问题: 为什么要在线更新资源和脚本文件!? 对于此问题,那要说的太多了,简单概括,如果你的项目已经在google play 或Apple Store 等平台上架了,那么当你项目需要做一些活动或者修改前端的一些代码等那么你需要重新提交一个新版本给平台,这时候你的上架时候是个不确定的时候,具体什么时候能上架,主要跟平台有关,你再着急,也没有用的. 那么如果你的项目是使用脚本语言进行

重新发现Oracle太美之awr相关脚本简单介绍

大家知道在$ORACLE_HOME/rdbms/admin下,有如下的相关脚本(我的环境为11.2.0.4.2): [[email protected] ~]$ cd $ORACLE_HOME/rdbms/admin [[email protected] admin]$ ls -ltr awr* -rw-r--r-- 1 oracle oinstall  1999 Oct 24  2003 awrrpt.sql -rw-r--r-- 1 oracle oinstall 49166 Sep  1

性能测试相关脚本

1,restime统计响应时间 #!/bin/bash #统计日志响应时间用 if [ $# -lt 1 ]; then echo "at least have one param; " echo "ex: restime a.log b.log *.log" exit 1 fi . lgq_config.sh for((i=1;i<=$#;i++));do opt=`echo ${!i} | grep "^\-F" | awk -F&qu

expect交互式自动化脚本

一 什么是expect 1 Expect is a tool for automating interactive applications such as telnet, ftp, 2 passwd, fsck, rlogin, tip, etc. Expect really makes this stuff trivial. Expect 3 is also useful for testing these same applications. And by adding Tk, you 4

备份相关脚本

原文:备份相关脚本 --查看一周内备份信息: SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, msdb.dbo.backupset.database_name, msdb.dbo.backupset.backup_start_date, msdb.dbo.backupset.backup_finish_date, msdb.dbo.backupset.expiration_date, CASE msdb..ba

expect批量scp脚本

实验环境 1. 本地主机 192.168.1.17 2. 远程主机 192.168.1.18 192.168.1.19 实验目标 使用expect非交互式脚本与scp命令结合,实现scp批量传输本地文件到远程主机. 脚本注意事项 1. 确保本地主机已安装expect 2. 目标主机非第一次登陆,scp时,不需要输入"yes" 3. 注意列表文件与变量的顺序 #################################################################

expect自动化交互脚本(三)

接着写一个稍微复杂点的脚本,分发文件到指定服务器脚本. 首先我们要知道远程分发文件的命令格式 scp 源文件 验证用户@远程主机:远程目录 [[email protected] ~]# scp auto_yes.exp [email protected]:/tmp/ 需求就是通过脚本来实现发送,不需要输入密码,也就是验证用户是固定的还有密码是固定的,其他的主机IP和目的路径是不固定的,我们通过设置为位置变量来实现自定义化.最终实现的效果: [[email protected] ~]# expec

expect自动化交互脚本(二)

紧接着上篇脚本进行拆分,分析里面的每个单词以及参数,解开交互的面纱,下面看脚本 #!/bin/expect spawn ssh [email protected] expect {       "yes/no"     {send "yes\r";exp_continue}  ##匹配到yes/no就自动输入yes,继续往下匹配       "*password"    {send "root\r"}        ##匹配到

又一次发现Oracle太美之awr相关脚本简介

大家知道在$ORACLE_HOME/rdbms/admin下,有例如以下的相关脚本(我的环境为11.2.0.4.2): [[email protected] ~]$ cd $ORACLE_HOME/rdbms/admin [[email protected] admin]$ ls -ltr awr* -rw-r--r-- 1 oracle oinstall ?1999 Oct 24 ?2003 awrrpt.sql -rw-r--r-- 1 oracle oinstall 49166 Sep ?