一、每天两点打包指定文件,并删除七天前的打包
#!/bin/bash
#获取当前时间
nowtime=$(date +%Y%m%d)
#确保/backup目录存在
mkdir -p /root/backup
#tar备份
tar -czf /root/backup/${nowtime}-log_passwd_shadow.tar.gz /etc/passwd /etc/shadow /var/log
#只保留七天的备份文件
find /root/backup -mtime +7 -type f -name "*.tar.gz" -exec rm -rf {} \;
二、传入一个网段,如192.168.50.,扫描该网段里的ip存活情况和对应端口开放状态,并记录到文件
#!/bin/bash
#扫描端口函数
scan_ports(){
#定义常见的端口号
ports=(22 80 3306 53 10050 10051 21 8080)
#for 循环使用nc去扫描
for ((i=0; i<${#ports[*]}; i++))
do
nc -z $1 ${ports[i]}
if (($? == 0));then
open_ports[i]=${ports[i]}
fi
done
if (($2 == 1));then
echo "$1 激活,开放了 ${open_ports[*]}端口" >> scan_result.log
else
echo "$1 未激活,开放了 ${open_ports[*]}端口" >> scan_result.log
fi
}
#扫描局域网函数
scan_lan(){
#扫描探测
for i in {1..254}
do
# (命令)& 开启子进程在后台运行,实现shell编程的多进程功能
(ping -c 1 -w 1 $1$i &>/dev/null #ping命令去探测
if (( $? == 0 ));then
scan_ports $1$i 1
else
scan_ports $1$i 0
fi)&
done
#wait 等待上面的所有的子进程结束,然后退出整个脚本
wait
}
>scan_result.log
scan_lan $1
三、实现windows里的回收站功能
1、删除时备份
#!/bin/bash
#传入当前目录下的一个文件或文件夹,把它放到回收站中
#确保有回收站这个目录
mkdir -p /root/recycle/recyclebin
#记录原路径
touch /root/recycle/recyclebin/.path
original_path=`pwd`/$1
echo $original_path >> /root/recycle/recyclebin/.path
#移动到回收站
mv $original_path /root/recycle/recyclebin
if (($? == 0));then
echo "已放到回收站"
else
exit
fi
2、去回收站还原
#!/bin/bash
#传入回收站下的一个文件名,并把他还原到之前的目录去
#文件在回收站的路径
recyclebin_path="/root/recycle/recyclebin/$1"
#匹配到原来的路径
restore_path=`grep $1 /root/recycle/recyclebin/.path`
mv $recyclebin_path $restore_path
if (($? == 0));then
echo "已还原到原目录"
#还原后就删除记录文件里的原路径
sed -i "/${1}/d" /root/recycle/recyclebin/.path
else
exit
fi
四、一键配置centos7国内yum源
#!/bin/bash
yum install -y wget
#备份之前的yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载国内yum源并更换
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
#清除之前的缓存,重新加载yum
yum clean all
#新建一个缓存文件
yum makecache
五、查看现在距出生过了多少天
#!/bin/bash
read -p "请输入你的生日(如2001-01-01):" bir
today=$(date +%s)
birthday=$(date -d ${bir} +%s)
days_second=$(($today - $birthday ))
day_day=$(( $days_second/86400))
echo "今天距离你的出生日期已经过去了$day_day天"
六、内存使用率超过80%就给予提醒,没有超过显示使用了多少,也给予提醒
#!/bin/bash
ctime=$(date +%Y%m%d%H%M%S)
log="/var/log/$0.log"
#得到总的内存和剩余的内存空间
total=$(free -m |grep Mem|awk '{print $2}')
m_free=$(free -m |grep Mem|awk '{print $4}')
#计算出内存的使用率
used_percent=$((100 - m_free*100/total ))
#判断给予提醒信息
if (( used_percent >= 80 ))
then
echo "警告!你的内存使用率超过80%,目前使用率是$used_percent"
echo "警告!你的内存使用率超过80%,目前使用率是$used_percent" >$log
else
echo "你的内存使用率是$used_percent,还可以继续运行其他的程序,放心使用"
fi
七、一次性查看网关、ip、dns
#!bin/bash
ip_address=$(ip a|egrep "ens33$"|awk '{print substr($2,1,(length($2)-3))}')
echo "ip地址是:" $ip_address
ip_route=$(ip r|grep "default"|awk '{print $3}')
echo "默认路由是:"$ip_route
ip_dns=$(grep "nameserver" /etc/resolv.conf | awk '{print $2}')
echo "DNS地址:" $ip_dns
八、一键编译安装nginx
#!/bin/bash
#安装依赖
yum install epel-release -y
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim wget
#新建用户和组
id lilin || useradd lilin -s /sbin/nologin
#下载nginx软件包
mkdir /lilin99 -p
cd /lilin99
wget https://nginx.org/download/nginx-1.21.4.tar.gz
#解压软件
tar -xf nginx-1.21.4.tar.gz
cd nginx-1.21.4
#编译前做好配置
./configure --prefix=/usr/local/sclilin99 --user=lilin --group=lilin --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_gunzip_module
#判断配置是否成功
if (( $? != 0 ));then
echo "编译配置出错,已退出"
exit
fi
#开始编译,启动两个进程,提高速度
make -j 2
#安装
make install
#修改PATH变量,方便执行nginx相关命令
echo "PATH=$PATH:/usr/local/sclilin99/sbin" >> /root/.bashrc
source /root/.bashrc
#停一秒,让上一条命令执行完
sleep 1
#关闭防火墙并设置开机不启动,同时关闭selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
#设置nginx开机自启
chmod +x /etc/rc.d/rc.local
echo "/usr/local/sclilin99/sbin/nginx" >> /etc/rc.local
#修改nginx.conf的配置,例如:端口号、worker进程数、线程数、服务域名
sed -i '/worker_processes/ s/1/4/' /usr/local/sclilin99/conf/nginx.conf
sed -i '/worker_connections/ s/1024/2048/' /usr/local/sclilin99/conf/nginx.conf
sed -i -r '36c \\tlisten 80;' /usr/local/sclilin99/conf/nginx.conf
sed -i -r '37c \\tserver_name www.lilin.com;' /usr/local/sclilin99/conf/nginx.conf
#杀死nginx进程
killall -9 nginx
#启动nginx
/usr/local/sclilin99/sbin/nginx