服务器运维小工具

来自集智百科
跳转到: 导航搜索

目录

SSH端口转发

作用

通过ssh转发把swarma.net的某个端口和内网机器的端口进行映射,直接通过互联网访问到内网机器,并每分钟检测一次连接状态,如果断开则重连。

代码

#!/bin/bash
ssh root@swarma.net netstat -tln | awk '{print $4}' | awk -F : '{print $2}' | sort -nu| grep -q "^$1$"
res=$?
if [ $res -eq 0 ]; then 
	echo $(date)":$1->$2 connection ok";
else 
	sleep 5;
	ssh root@swarma.net netstat -tln | awk '{print $4}' | awk -F : '{print $2}' | sort -nu| grep -q "^$1$"
	res=$?
	if [ $res -eq 0 ]; then 
		echo $(date)":$1->$2 connection ok";
	else 
		echo $(date)":$1->$2 connection lost";
 
	        echo $(date):kill old ssh;
		pids=$(ps axu | grep qfnNR | grep " $1:" | awk '{print $2}');
	        for pid in $pids; do 
			echo kill $pid; 
			#kill $pid; 
		done;
 
	        echo $(date):retry;
		echo ssh -qfnNR $1:127.0.0.1:$2 root@swarma.net	
		ssh -qfnNR $1:127.0.0.1:$2 root@swarma.net	
	fi
fi

crontab文件调用

* * * * * /home/tools/scripts/autoConnect.sh 12345 22 >> /home/tools/scripts/autoConnect.log 2>&1

python进程监控器

说明

通过查询cpu使用时间超过一分钟的进程来估计theano使用的情况,如果有进程开始或者结束则发送邮件报告状态变更。

代码

#!/bin/bash
large_process_time_limit=1
touch /tmp/new_proc
cp /tmp/new_proc /tmp/old_proc
 
ps aux | grep python | grep -v grep | awk '{
 split($10,time,":"); 
 if (time[1]>='"$large_process_time_limit"') print $0;
} ' > /tmp/new_proc_raw
 
cat /tmp/new_prco_raw  | sed 's/ .*:.[^ ]/ /g' > /tmp/new_proc
 
diff /tmp/old_proc /tmp/new_proc | grep "^>\|^<" | sed 's/^</stop: /g' | sed 's/^>/start: /g' > /tmp/proc_change
if [ -s /tmp/proc_change ] ; then
   cat /tmp/proc_change > /tmp/mail_content
   echo " " >> /tmp/mail_content
   echo "--------- process running list ----------" >> /tmp/mail_content
   cat /tmp/new_proc_raw >> /tmp/mail_content
 
   cat /tmp/mail_content
   echo mutt -s "work station process changed" example@gmail.com 
 
   cat /tmp/mail_content | mutt -s "work station monitor ($(date))" example@gmail.com 
fi

crontab文件调用

* * * * * /home/tools/scripts/detectNewProcess.sh >> /home/tools/scripts/detectNewProcess.log 2>&1
个人工具
名字空间
操作
导航
工具箱