開發中常用的shell腳本&數據處理

watch.sh(生產環境日誌異常監控shell腳本)

#!/bin/bash
#--------------------------------------------
# 監聽程序異常日誌, 如果出現異常則發送通知
# author:RUNTU
# weixin: classmisschen
#--------------------------------------------

# 切換到腳本執行的目錄 
cd `dirname $0`
# 監聽的日誌文件
logfile='error.log'
# 當前機器標識
environment="〓〓〓 PMS異常監控:XXX.XXX.XXX.XXX 〓〓〓\n"
# 獲取日誌當前的行號
beforelinenum=`sed -n '$=' $logfile`
# 監聽間隔時間時間
secondspan=15
while true
do
  afterlinenum=`sed -n '$=' $logfile`
  line=$(( $afterlinenum - $beforelinenum ))
  #echo "line:"$line
  beforelinenum=$afterlinenum
  content=`tail -n $line $logfile`
  if [ -n "$content" ]; then
	curl 'https://oapi.dingtalk.com/robot/send?access_token=1626fcbcddddddddddwd' \
-H 'Content-Type: application/json' -d "{\"msgtype\": \"text\",\"text\": { \"content\": \"$environment$content\" }}"
  fi
  sleep $secondspan
done
echo "====exit====="
exit

build.sh(jenkins持續集成腳本)

#!/bin/bash

PROFILE=/home/opt/code/taskcenter-V2.0
CODEFILE=/home/opt/code	
	
if [ -d $PROFILE ]; then
	rm -rf $PROFILE
	echo "清除上一次構建文件"
fi

cd $CODEFILE
svn export --username 用戶名 --password '密碼' https://111.22.3.444/svn/xxx/dsp-v2.0/code/tags/taskcenter-V2.0
echo "svn拉取代碼"
cd $PROFILE
mvn clean
mvn package -P common -U
pid=`netstat -nptl| grep 8088 | awk '{print $7}'|awk -F '/' '{print $1}'`
if [ -n "$pid" ]
then
   echo "kill掉上一次運行的工程-pid:" $pid
   kill -9 $pid
fi
echo "複製最新的jar到指定目錄"
cp /home/opt/code/taskcenter-V2.0/web/target/taskcenter-web-2.0.0.jar /home/opt/tomcat/taskcenter/taskcenter-web-2.0.0.jar

# 如果沒有配置全局不中斷請使用BUILD_ID=dontKillMe,例如:nohup /home/deploy-mq/startup.sh &
java -jar /home/opt/tomcat/taskcenter/taskcenter-web-2.0.0.jar &
echo "項目啓動"

手機號、身份證號脫敏

//JAVA
public static void main(String[] args) {
        String phone = "18888888888";
        String phoneNumber = phone.substring(0, 3) + "****" + phone.substring(7, phone.length());
        System.out.println("phone總長度:" + phone.length());
        System.out.println("phone前3位:" + phone.substring(0, 3));
        System.out.println("phone中4位:" + phone.substring(3, 7));
        System.out.println("phone後4位:" + phone.substring(7, phone.length()));
        System.out.println("phone中4*:" + phoneNumber);
     }
//SQL
SELECT
    INSERT ( 18888888888, 4, 4, '****' ) AS phone ,
    INSERT ( '37292219960101555X', 5, 10, '****' ) AS ID 
FROM
    DUAL;

mysql事務未釋放導致的鎖數據解鎖


SELECT * FROM information_schema.innodb_trx;
SELECT * FROM information_schema.innodb_locks;

show PROCESSLIST;
SELECT * FROM information_schema.PROCESSLIST WHERE command NOT IN ( 'Sleep' ) AND USER NOT IN ( 'mydba', 'event_scheduler', 'repl', 'binlogbak', 'system user' )

KILL 41501

logstash推送釘釘機器人配置

input {
    file {
        path => ["/home/opt/logs/taskcenter/error.log"]
		type => "taskcenter"
		stat_interval => 45
		codec=> multiline {
			pattern => "^[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3} \[ERROR\]"
			negate => true
			what => "previous"
			auto_flush_interval => 10
#			max_lines => 20
#			max_bytes => "2KiB"

		}
	}
}

filter {
	grok{
		match => { 
				"message" => "(?<temMsg>([\s\S]{1200}))"  
			} 
	}
	mutate {
		rename => {"temMsg" => "message"}		    
	}
}

output {
	if [type] == "taskcenter" {
		stdout {}
		http {
		  url => "鉤子地址"
		  http_method => "post"
		  content_type => "application/json; charset=utf-8"
		  format => "message"
          pool_max => 3
		  pool_max_per_route => 10
		  request_timeout => 10
		  retry_failed => false
		  socket_timeout => 6
		  message => '{"msgtype":"text","text":{"content":"%{[message]}"}}'
		}
	}

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章