File: //proc/self/root/usr/bin/bsm-agent-daemon.sh
#!/bin/sh
P=$(readlink -f "$0")
if [ "$1" != "hide" ]; then
echo "parent process exit"
/bin/sh $P hide >/dev/null 2>&1 &
echo $! > /var/run/bsm-agent-upgrader.pid
exit 0
fi
PRO_PATH=/opt/bsm-agent/
PRO_NAME=/opt/bsm-agent/bsm-agent
UPGRADE_PATH_TEMP=/tmp/bsm-agent/
UPGRADE_PATH=/opt/bsm-agent/upgrade/
mkdir -p $PRO_PATH
mkdir -p $UPGRADE_PATH
mkdir -p $UPGRADE_PATH_TEMP
VmUuid=`curl 169.254.169.254/latest/meta-data/instance-id` #vmId
TenantId=`curl 169.254.169.254/backend/meta-data/tenant-id` #tenantId
FixedIp=`ifconfig eth0 | awk '/inet /{print substr($2,0)}'` #fixedIp
Region=`curl 169.254.169.254/latest/meta-data/region` #region
MessageQueueHost=PulsarUrl
SubscriptionName=$VmUuid
IamUrl=IamUrl #unused
IamUserName=oos #unused
IamPassWord=password #unused
IamVersion=/v3 #unused
IamDomain=Default #unused
BosUrl=BosUrl #unused
UpdateUrl=http://download.bcm.baidubce.com/bsm-agent/bsm-agent-install.sh
UpdateInterval=5 #unused
UpdateWaitTime=3600
SLEEPTIME=7200
LAST_AGENT_RUNTIME=0
TIMEOUT=$[$UpdateWaitTime + $SLEEPTIME]
if [ -f $PRO_NAME ];then
cp $PRO_NAME "$UPGRADE_PATH"/agent
fi
while true ; do
TIME_NOW=$(date +%s)
AGENT_STOP_TIME=$[$TIME_NOW - $LAST_AGENT_RUNTIME]
if [ "$AGENT_STOP_TIME" -gt "$TIMEOUT" ];then
rm -f "$UPGRADE_PATH"/upgrader.sh.lock
fi
if [ ! -f "$UPGRADE_PATH"/upgrader.sh.lock ];then
NUM=`ps aux | grep -w ${PRO_NAME} | grep -v grep |wc -l`
if [ "${NUM}" -lt "1" ];then
if [ -f "$UPGRADE_PATH"/agent ];then
rm -f "$UPGRADE_PATH"/agent
fi
else
LAST_AGENT_RUNTIME=$(date +%s)
fi
wget -O "$UPGRADE_PATH_TEMP"/upgrader.sh $UpdateUrl -T 300 -t 1 -o /dev/null
if [ -s "$UPGRADE_PATH_TEMP"/upgrader.sh ];then
mv -f "$UPGRADE_PATH_TEMP"/upgrader.sh "$UPGRADE_PATH"
fi
if [ -f "$UPGRADE_PATH"/upgrader.sh ];then
chmod 744 "$UPGRADE_PATH"/upgrader.sh
date
echo "run upgrader.sh"
sh "$UPGRADE_PATH"/upgrader.sh "$UpdateWaitTime" -vu "$VmUuid" -mqh "$MessageQueueHost" -iu "$IamUrl" -iun "$IamUserName" -ipw "$IamPassWord" -iv "$IamVersion" -id "$IamDomain" -bu "$BosUrl" -sn "$SubscriptionName" -uu "$UpdateUrl" -ui "$UpdateInterval" -uwt "$UpdateWaitTime" -ti "$TenantId" -fi "$FixedIp" -rg "$Region" > /dev/null 2>&1 &#-debug
fi
fi
sleep "$SLEEPTIME"s
done
exit 0