shell脚本实例汇总


重启进程

processname1='mpm_ep'  #第一个程序名称
PROCESS1=$(ps -ef|grep $processname1|grep -v grep|grep -v PPID|awk '{print $1}')      #过滤出进程ID
kill -9 $PROCESS1    #杀掉进程
echo "Kill the $PROCESS1 "
processname2='MediaEngineServer'
PROCESS2=$(ps -ef|grep $processname2|grep -v grep|grep -v PPID|awk '{print $1}')
kill -9 $PROCESS2
echo "Kill the $PROCESS2 "
sleep 3
/lib/modules/exec/mpm_ep &
echo 'EXE mpm_ep SUCCESS'
sleep 5
/lib/modules/exec/MediaEngineServer &
echo 'EXE MediaEngineServer SUCCESS'

指定节奏ping,并记录ping结果

#!/bin/sh
#hilinux 只能用#!/bin/sh,可能是内核不支持bash
dir_current=$(cd `dirname $0`; pwd)
file_current=${dir_current}/log.log
loop_now=1

if [ -f ${file_current} ];then
rm -rf log.log && touch log.log
else
touch log.log
fi

read -p "please input your the number of loop you want to run : " loop_num
while [ $loop_now -lt $loop_num ]
do #hilinux用不了for循环,搞不懂为啥,所以才用while循环
echo $loop_now
echo ===========$loop_now========== >>$file_current
date >> $file_current
echo "   " >>$file_current
ping -c 1 114.84.70.54 >> $file_current    #每次只发一次ping包
#ping -c 1 10.10.10.166 >> $file_current

if [ $? -eq 1 ];then
echo 'fail' >> $file_current
echo 'fail'
else
echo 'pass' >> $file_current
echo 'pass'
fi

sleep 60
loop_now=$(($loop_now+1))

done

自动实现生成证书

#!/bin/bash
dir_current=$(cd `dirname $0`; pwd)

rz

if [ -f ${dir_current}/ysm_soft.cer ];then
rm -rf ysm_soft.cer
fi

export LD_LIBRARY_PATH=.
./kdssl x509 -req -extfile ca.cnf -extensions v3_sign -in sign.req -CA ca.cer -CAkey ca.key -days 3600 -CAcreateserial -out ysm_soft.cer -sm3

if [ -f ${dir_current}/sign.req ];then
rm -rf sign.req 
fi

sz ysm_soft.cer

if [ -f ${dir_current}/ysm_soft.cer ];then
rm -rf ysm_soft.cer
fi

 在一个文本文件中查询一个字符串

pro_port=`grep -rn "port=" ./case.conf`  #文本文件中符合的都输出,且带上行数,如,22:bport=22 28:port=8081
pro_port=${pro_port##*=} #最短取值法,等号及等号左边全去掉。
echo $pro_port