本文共 11871 字,大约阅读时间需要 39 分钟。
ntpdate 210.72.145.44
free && sync && echo 3 > /proc/sys/vm/drop_caches && free
kill $(ps -A -ostat,ppid | awk '/[zZ]/ && !a[$2]++ {print $2}')
tcpdump 'arp' -e -i eth0 -n -p -t |grep is-ateth0对应要换成你的显步名称
tcpdump -n -vv tcp port $1 -i em1em1为对应的网卡名称。
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -nr
tail -F /var/log/tomcat8/catalina.out |grep -E 'Exception|at' |grep -v WARN这里tomcat8要对应成你的相应版本
sudo find /var/lib/tomcat8/logs/ -mtime +5 -exec rm {} \;
以下存成脚本,
#!/bin/sh#实现通过主机名,端口清相应的memcache缓存 if(($#<2));then echo "usage:$0 host port"; exit 1;fi#如果参数缺失,退出程序,返回状态1exec 6<>/dev/tcp/$1/$2 2>/dev/null;#打开host的port 可读写的socket连接,与文件描述符6连接if(($?!=0));then echo "open $1 $2 error!"; exit 1;fi#如果打开失败,$?返回不为0,终止程序echo -e "flush_all">&6;echo -e "quit">&6;#将HEAD 信息,发送给socket连接cat<&6;#从socket读取返回信息,显示为标准输出exec 6<&-;exec 6>&-;#关闭socket的输入,输出exit 0;
#!/bin/bashVM=$1VBoxManage controlvm $VM poweroffVBoxManage modifyvm $VM --memory $2VBoxManage startvm $VM --type headless
#!/bin/sh#machine=phptestmachine=$1VBoxManage controlvm "$machine" poweroffdisk=/home/xwx/VirtualBox\ VMs/$machine/${machine}_swap.vdi#VBoxManage createhd --filename "$disk" --size 1024#VBoxManage storageattach "$machine" --storagectl "IDE" --port 1 --type hdd --medium $disk#VBoxManage storageattach "$machine" --storagectl SATA --port 1 --type hdd --medium $diskVBoxManage storageattach "$machine" --storagectl "SATA 控制器" --port 1 --type hdd --medium "$disk"
#!/bin/bash# set modifyip=/etc/network/interfaceshn=/etc/hostnamenetmask=255.255.255.0network=192.168.20.0broadcast=192.168.20.255gateway=192.168.20.1# mod ip、mask、gw、dns、hostnamecp $ip /etc/network/interfaces.baksed -ri 's/(iface eth0 inet).*/\iface eth0 inet static/' /etc/network/interfacesecho "Please input IP:"read ipadd if [ -n "$ipadd" ]; then echo "address $ipadd" >> $ip echo "Modify Completed " else echo "Not Modified" fiecho "netmask $netmask" >> $ipecho "Netmask Modify Completed "echo "network $network" >> $ipecho "Network Modify Completed "echo "broadcast $broadcast" >> $ipecho "Broadcast Modify Completed "echo "gateway $gateway" >> $ipecho "Gateway Modify Completed "echo "Please input hostname:"read hostnameif [ -n "$hostname" ]; then echo "$hostname" > $hn echo "Modify Completed "else echo "Default Hostname"fiecho "All modification completion"read -n1 -p "Whether restart network [Y/N]?"case $REPLY inY|y) echo /etc/init.d/networking restart;;N|n) echo echo "Network needs to restart to take effect!!!!!!";;esacexit
使用goaccess软件,可能用apt install goaccess或yum install goaccess安装。
sudo goaccess /var/log/nginx/access.log --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u" "-" "%v"' --date-format='%d/%b/%Y' --time-format='%H:%M:%S'
nginx会频繁修改,改之前最好备份一下:
##########################################################################mysqldump####################################################!/bin/sh# -----------------------------# the directory for story your backup file.backup_dir="/home/your/backup"# date format for backup file (dd-mm-yyyy)time="$(date +"%Y%m%d")"MKDIR="$(which mkdir)"RM="$(which rm)"MV="$(which mv)"TAR="$(which tar)"GZIP="$(which gzip)"#针对不同系统,如果环境变量都有。可以去掉# check the directory for store backup is writeable.test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 0# the directory for story the newest backuptest ! -d "$backup_dir" && $MKDIR "$backup_dir"$TAR -zcPf $backup_dir/$HOSTNAME.nginx.$time.tar.gz /etc/nginx$TAR -zcPf $backup_dir/$HOSTNAME.cron_daily.$time.tar.gz /etc/cron.daily#delete the oldest backup 30 days agofind $backup_dir -name "*.gz" -mtime +30 |xargs rm -rfexit 0;
#!/bin/bashnginx_home=/etc/nginxlog_path=/var/log/nginxtail -n10000 $log_path/access.log \ |awk '{print $1,$12}' \ |grep -i -v -E "google|yahoo|baidu|msnbot|FeedSky|sogou" \ | grep -v '223.223.198.231' \ |awk '{print $1}'|sort|uniq -c|sort -rn \ |awk '{if($1>50)print "deny "$2";"}' >>./blockips.confsort ./blockips.conf |uniq -u >./blockips_new.confmv ./blockips.conf ./blockips_old.confmv ./blockips_new.conf ./blockips.confcat ./blockips.conf#service nginx reload
#!/bin/shRED='\033[0;31m'GREEN='\033[0;32m'NC='\033[0m' # No Colorfunction test_domain { local domain=$1 status=`curl -s -o /dev/null -I -w "%{http_code}" $domain` if [ $status -eq '404' ] then printf "${domain}${RED} ${status}${NC}\n" else printf "$domain$GREEN $status$NC\n" fi}domain_list=$'bixuebihui.cn\nwww.bixuebihui.cn\ndev.bixuebihui.cn\nblog.bixuebihui.cn\nbixuebihui.com\nwww.bixuebihui.com'while read -r domain; do# echo "... $domain ..." test_domain "http://$domain" test_domain "https://$domain"done <<< "$domain_list"
#!/usr/bin/perl## Nathanial Hendler# http://retards.org/## 2001-06-26 v1.0## This perl script parses a MySQL slow_queries log file# ignoring all queries less than $min_time and prints# out how many times a query was greater than $min_time# with the seconds it took each time to run. The queries# are sorted by number of times it took; the most often# query appearing at the bottom of the output.## Usage: mysql_slow_log_parser logfile## ------------------------# SOMETHING TO THINK ABOUT (aka: how to read output)# ------------------------## Also, it does to regex substitutions to normalize# the queries...## $query_string =~ s/\d+/XXX/g;## $query_string =~ s/([\'\"]).+?([\'\"])/$1XXX$2/g;## These replace numbers with XXX and strings found in# quotes with XXX so that the same select statement# with different WHERE clauses will be considered# as the same query.## so these...## SELECT * FROM offices WHERE office_id = 3;# SELECT * FROM offices WHERE office_id = 19;## become...## SELECT * FROM offices WHERE office_id = XXX;### And these...## SELECT * FROM photos WHERE camera_model LIKE 'Nikon%';# SELECT * FROM photos WHERE camera_model LIKE '%Olympus';## become...## SELECT * FROM photos WHERE camera_model LIKE 'XXX';### ---------------------# THIS MAY BE IMPORTANT (aka: Probably Not)# ---------------------## *SO* if you use numbers in your table names, or column# names, you might get some oddities, but I doubt it.# I mean, how different should the following queries be# considered?## SELECT car1 FROM autos_10;# SELECT car54 FROM autos_11;## I don't think so.#$min_time = 0; # Skip queries less than $min_time$min_rows = 0;$max_display = 10; # Truncate display if more than $max_display occurances of a queryprint "\n Starting... \n";$query_string = '';$time = 0;$new_sql = 0;############################################### Loop Through The Logfile##############################################while (<>) { # Skip Bogus Lines next if ( m|/.*mysqld, Version:.+ started with:| ); next if ( m|Tcp port: \d+ Unix socket: .*mysql.sock| ); next if ( m|Time\s+Id\s+Command\s+Argument| ); next if ( m|administrator\s+command:| ); # print $_; # if ( /Query_time:\s+(.*)\s+Lock_time:\s+(.*)\s/ ) { #if ( /Query_time:\s+(.*)\s+Lock_time:\s+(.*)\s+Rows_examined:\s+(\d+)/ ) { if ( /Query_time:\s+(.*)\s+Lock_time:\s+(.*)\s+Rows_examined:\s+(.*)/ ) { $time = $1; $rows = $3; $new_sql = 1; # print "found $1 $3\n"; next; } if ( /^\#/ && $query_string ) { if (($time > $min_time) && ($rows >= $min_rows)) { $orig_query = $query_string; $query_string =~ s/\d+/XXX/g; $query_string =~ s/'([^'\\]*(\\.[^'\\]*)*)'/'XXX'/g; $query_string =~ s/"([^"\\]*(\\.[^"\\]*)*)"/"XXX"/g; #$query_string =~ s/([\'\']).*?(\\2)/$1XXX$2/g; #$query_string =~ s/\s+/ /g; #$query_string =~ s/\n+/\n/g; push @{$queries[$query_string]}, $time; push @{$queries_rows[$query_string]}, $rows; $queries_tot[$query_string] += $time; $queries_orig[$query_string] = $orig_query; $query_string = ''; } } else { if ($new_sql) { $query_string = $_; $new_sql = 0; } else { $query_string .= $_; } }}############################################### Display Output##############################################foreach my $query ( sort { $queries_tot[$b] <=> $queries_tot[$a] } keys %queries_tot ) { my $total = 0; my $cnt = 0; my @seconds = sort { $a <=> $b } @{$queries[$query]}; my @rows = sort { $a <=> $b } @{$queries_rows[$query]}; ($total+=$_) for @seconds; ($cnt++) for @seconds; print "### " . @{$queries[$query]} . " Quer" . ((@{$queries[$query]} > 1)?"ies ":"y ") . "\n"; print "### Total time: " . $total .", Average time: ".($total/$cnt)."\n"; print "### Taking "; print @seconds > $max_display ? "$seconds[0] to $seconds[-1]" : sec_joiner(\@seconds); print " seconds to complete\n"; print "### Rows analyzed "; print @rows > $max_display ? "$rows[0] - $rows[-1]": sec_joiner(\@rows); print "\n"; print "$query\n"; print $queries_orig[$query}."\n\n";}sub sec_joiner { my ($seconds) = @_; $string = join(", ", @{$seconds}); $string =~ s/, (\d+)$/ and $1/; return $string;}exit(0);
ip route add 5.6.13.192/26 dev em1 src 5.6.13.218 table 10ip route add default via 5.6.13.254 table 10ip route add 5.6.13.192/26 dev em2 src 5.6.13.217 table 20ip route add default via 5.6.13.254 table 20ip route add 5.6.13.192/26 dev em1 src 5.6.13.218ip route add 5.6.13.192/26 dev em2 src 5.6.13.217ip route add default via 5.6.13.254ip rule add from 5.6.13.218 table 10ip rule add from 5.6.13.217 table 20ip route flush cache
#!/bin/python# -*- coding: utf-8 -*-from flask import Flaskfrom flask import requestimport jsonimport requestsapp = Flask(__name__)def transform(text): textMap = json.loads(text) nodePorturl = 'http://192.168.10.182:3672' externalURL = textMap['externalURL'] print(externalURL) links =[] for alert in textMap['alerts']: print('-------------') time = alert['startsAt'] + ' -- ' + alert['endsAt'] generatorURL = alert['generatorURL']; generatorURL = nodePorturl+generatorURL[generatorURL.index('graph'):] summary = alert['annotations']['summary'] description = alert['annotations']['description'] status = alert['status'] title = alert['labels']['alertname'] link = {} link['title'] = title link['text'] = status + ': ' + description link['messageUrl'] = generatorURL link['picUrl'] = '' links.append(link) return links@app.route('/',methods=['POST'])def send(): if request.method == 'POST': post_data = request.get_data() alert_data(post_data) return "hello"def alert_data(data): url = 'https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN' headers = {'Content-Type': 'application/json'} for link in transform(data): send_data = {"msgtype": "link", "link": link} print(send_data) r = requests.post(url, data=json.dumps(send_data), headers=headers)if __name__ == '__main__': app.run(host='0.0.0.0', port=1111)
转载地址:http://srzfk.baihongyu.com/