很经典的一段shell 代码

#!/bin/bash

APP_NAME=agent

DIST_TAR_NAME=agent.tgz

 

WORK_PATH=`pwd`

 

TMPDIR=$WORK_PATH/mytmp

 

BASE_PATH=/usr/local/sa/agent

 

NAKED_SH=$TMPDIR/install-nk.sh

 

INSTALL_LOG=$BASE_PATH/install.log

 

CRON_FILE_TMP_1=/tmp/cron.tmp.1

CRON_FILE_TMP_2=/tmp/cron.tmp.2

 

STOP_AGENT=/usr/local/sa/agent/stop.sh

OLD_AGENT=/usr/local/secu/tconfscan

 

 

makedir ()

{

        if [ ! -d $1 ]; 

        then

                mkdir -p $1

        fi

}

 

untarfile()

{

        if [ ! -d $2 ]; 

        then

                mkdir -p $2

        fi

 

        if [ -f /bin/tar ];then

                tar xzfv $1 -C $2

        else

                ttars xzfv $1 -C $2

        fi

 

        if [ $? != 0 ];

        then

                echo "tar -xzvf $1 -C $2 ......[no],abort!" >> $INSTALL_LOG;

#               exit -1;

        fi

}

 

crontab -l -u root > $CRON_FILE_TMP_1

grep -Evw 'aide|secu-tcs-agent' $CRON_FILE_TMP_1 > $CRON_FILE_TMP_2

crontab $CRON_FILE_TMP_2 -u root

 

ps aux |grep secu-tcs-agent| grep grep -v |awk '{print $2}' > /tmp/sagent.pid

while read pid

do

        kill -9 ${pid}

done < /tmp/sagent.pid

 

if [ -d "$OLD_AGENT" ];then

        rm -rf /usr/local/secu/tconfscan 

fi

 

if [ -f "$STOP_AGENT" ];then

        bash $STOP_AGENT

fi

 

if [ ! -d $BASE_PATH ];

then

        makedir $BASE_PATH

        chmod 755 $BASE_PATH -R

        makedir $BASE_PATH/secubase

        makedir $BASE_PATH/plugins

fi

 

##############check unzip

FIND_UNZIP=`ls /usr/bin/unzip|wc -l`

if [ "$FIND_UNZIP" -eq "0" ]

then

        cp -r $WORK_PATH/unzip /usr/bin/unzip

        chmod +x /usr/bin/unzip

fi

 

echo "-------------------begin install-------------------" >> $INSTALL_LOG

 

echo "[extracting file] ......" >> $INSTALL_LOG

 

untarfile "$WORK_PATH/$DIST_TAR_NAME" $TMPDIR

 

chmod +x ${NAKED_SH}

 

${NAKED_SH}

 

 

echo "-------------------------------------------------------------------------------" 

echo "[install succ] at time:[`date`]" 

echo "                   dir:[$BASE_PATH]"

echo "                  pack:[$DIST_TAR_NAME]"

echo "-------------------------------------------------------------------------------"

echo "[RESULT] sec-agent install OK"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell脚本高级编程教程,希望对你有所帮助。 Example 10-23. Using continue N in an actual task: 1 # Albert Reiner gives an example of how to use "continue N": 2 # --------------------------------------------------------- 3 4 # Suppose I have a large number of jobs that need to be run, with 5 #+ any data that is to be treated in files of a given name pattern in a 6 #+ directory. There are several machines that access this directory, and 7 #+ I want to distribute the work over these different boxen. Then I 8 #+ usually nohup something like the following on every box: 9 10 while true 11 do 12 for n in .iso.* 13 do 14 [ "$n" = ".iso.opts" ] && continue 15 beta=${n#.iso.} 16 [ -r .Iso.$beta ] && continue 17 [ -r .lock.$beta ] && sleep 10 && continue 18 lockfile -r0 .lock.$beta || continue 19 echo -n "$beta: " `date` 20 run-isotherm $beta 21 date 22 ls -alF .Iso.$beta 23 [ -r .Iso.$beta ] && rm -f .lock.$beta 24 continue 2 25 done 26 break 27 done 28 29 # The details, in particular the sleep N, are particular to my 30 #+ application, but the general pattern is: 31 32 while true 33 do 34 for job in {pattern} 35 do 36 {job already done or running} && continue 37 {mark job as running, do job, mark job as done} 38 continue 2 39 done 40 break # Or something like `sleep 600' to avoid termination. 41 done 42 43 # This way the script will stop only when there are no more jobs to do 44 #+ (including jobs that were added during runtime). Through the use 45 #+ of appropriate lockfiles it can be run on several machines 46 #+ concurrently without duplication of calculations [which run a couple 47 #+ of hours in my case, so I really want to avoid this]. Also, as search 48 #+ always starts again from the beginning, one can encode priorities in 49 #+ the file names. Of course, one could also do this without `continue 2', 50 #+ but then one would have to actually check whether or not some job 51 #+ was done (so that we should immediately look for the next job) or not 52 #+ (in which case we terminate or sleep for a long time before checking 53 #+ for a new job).

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值