常用shell脚本

mtain 2023年01月31日 465次浏览

1. shell脚本检测http服务可用性

curl_test.sh

#!/bin/bash
# crontab设置每分钟执行
# */1 * * * * sh /opt/curl_test.sh

step=10 #间隔秒数
for((i=0;i<60;i=(i+step)));do
  status_code=$(curl -s -o /dev/null -w "%{http_code}" "https://www.baidu.com")
  if [[ $status_code -ne 200 ]]; then
    echo `date +"%Y-%m-%d %H:%m:%S"`"  request failed" >> curl_test_rst.txt
  fi
  sleep $step
done;
exit 0


2. 查看有多少远程的 IP 在连接本机

#!/bin/bash
# 查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计) 

# 使用 netstat ‐atn 可以查看本机所有连接的状态,‐a 查看所有,
# -t仅显示 tcp 连接的信息,‐n 数字格式显示
# Local Address(第四列是本机的 IP 和端口信息)
# Foreign Address(第五列是远程主机的 IP 和端口信息)
# 使用 awk 命令仅显示第 5 列数据,再显示第 1 列 IP 地址的信息
# sort 可以按数字大小排序,最后使用 uniq 将多余重复的删除,并统计重复的次数
netstat -atn  |  awk  '{print $5}'  | awk  '{print $1}' | sort -nr  |  uniq -c

3. 重新启动tomcat

#!/bin/bash
#kill tomcat pid
pidlist=`ps -ef|grep apache-tomcat-7.0.75|grep -v "grep"|awk '{print $2}'`  #找到tomcat的PID号
echo "tomcat Id list :$pidlist"  //显示pid
kill -9 $pidlist  #杀掉改进程
echo "KILL $pidlist:" //提示进程以及被杀掉
echo "service stop success"
echo "start tomcat"
cd /opt/apache-tomcat-7.0.75
pwd
rm -rf work/*
cd bin
./startup.sh #;tail -f ../logs/catalina.out

4. 查找网段存活主机

#!/bin/bash

# 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机
# 状态(for 版本)
for i in {1..254}
do 
 # 每隔0.3秒ping一次,一共ping2次,并以1毫秒为单位设置ping的超时时间
 ping -c 2 -i 0.3 -W 1 192.168.1.$i &>/dev/null
     if [ $? -eq 0 ];then
 echo "192.168.1.$i is up"
 else 
 echo "192.168.1.$i is down"
 fi
done

5. MySQL数据库备份

#!/bin/sh
cur_time=`date +%Y%m%d_%H%M%S`

mysqldump -h127.0.0.1 -u[用户] -p[密码] -P3306 -c [数据库名] > [数据库名]_${cur_time}.sql
tar zcvf [数据库名]_${cur_time}.sql.tar.gz [数据库名]_${cur_time}.sql
rm -f [数据库名]_${cur_time}.sql
mv [数据库名]_${cur_time}.sql.tar.gz /backup/

6. Oracle数据库备份

#!/bin/sh
bak_dir='/u01/oracle/11g/app/oracle/dpdata/'
save_day=10

Backup_file()
{
cur_time=`date +%Y%m%d_%H%M%S`
expdp user/passwd directory=dpdata dumpfile=${cur_time}.dmp
}

Clear_bak()
{
today=`date +%Y%m%d`
delday=$[today-save_day]

rm -rf $bak_dir`date -d '-'$save_day' days' +%Y%m%d`_*.tar.gz
}
source /home/oracle/.bash_profile
Backup_file
Clear_bak

7. 增量同步文件

rsync -a --delete /data /dbackup/