##### 基础脚本 #########################
##### 01. 同时读取两个脚本 ##############
#!/bin/bash
#同时读取两个文件进行循环
exec 3<"1.txt"
exec 4<"2.txt"
while read line1<&3 && read line2<&4
do
echo $line1 $line2
EOF
done
##### 02. 读取两个文件循环 批量修改文件 ##################
#!/bin/bash
# 读取两个文件循环 批量修改文件
# 可实现读取前5行输出到第一个文件中 再次5行输出到第二个文件中
# 由于网站不识别utf-8编码 可先使用iconv转码 转成gbk
web_dir=/home/www/wwwroot/
iconv -f utf-8 -t gbk url.txt > url_gbk.txt
while read line1
do
echo >> $web_dir$line1/data/flink.conf
y=1
while read line2
do
if [ $y -le 5 ];then
let y++
else
sed -i '1,5d' url_gbk.txt
break 1
fi
echo "$line2" >> $web_dir$line1/data/flink.conf
done < url_gbk.txt
done < web.txt
echo > url.txt
rm -f url_gbk.txt
###### 03. 检测某一端口是否存活 ############
# 每1分钟检测一次800端口是否存活 自动重新启动vpn手机端服务
# 添加开启启动 echo "nohup /data/shell/shadowsocksr_status.sh &" >> /etc/rc.local
# 手动启动 nohup /data/shell/shadowsocksr_status.sh &
# 2020_12_14_T
while :
do
lsof -i:800 &>/dev/null
if [ $? -eq 0 ]; then
echo -e "\e[1;35mshadowsocksr is open\e[0m"
else
echo -e "\e[1;31mshadowsocksr is close\e[0m"
{
python /usr/local/shadowsocksr-3.2.1/server.py &
} &
echo -e "\e[1;33mshadowsocksr is rsetart\e[0m"
fi
sleep 60s
done
##### 04. ping01 脚本 ##########################
# 此脚本会 ping /data/shell/a.txt 里面的所有网址 会循环ping 多线程
# nohup /data/shell/ping.sh >/data/shell/nohup.out 2>&1 & \\ 后台执行 ping.sh的打印信息会输出到指定目录下的nohup.out中
# 添加开机启动 /etc/profile.d/pings.sh --> #!/bin/bash nohup /data/shell/ping.sh >/data/shell/nohup.out 2>&1 &
# killall ping.sh 停止脚本 killall 的包是psmisc 可以 yum install psmisc安装
for ((n = 1;n >0;n++))
do
while read IP
do
{
ping $IP -c2 -s1 2>&1 1>>/dev/null && echo -e $IP is "\033[32;49;1malive\033[39;49;0m" || echo -e $IP is "\033[31;49;1mdown\033[39;49;0m"
} &
done < /data/shell/a.txt
wait
done
##### 05. ping02 脚本 ##############################
##### 检测局域网内所有的ip是否在线 多线程 ######
for i in $(seq 1 254)
do
{
IP="192.168.10.$i"
ping $IP -c2 -s1 2>&1 1>>/dev/null && echo -e $IP is "\033[32;49;1malive\033[39;49;0m" || echo -e $IP is "\033[31;49;1mdown\033[39;49;0m"
} &
done
wait
echo "所有ip检测完毕"
##### 06. 检测nginx是否存活 重启nginx ###########
# 检测nginx 是否存活
# 运行脚本使用此命令后台 nohup /data/shell/nginx_status.sh &
# 添加开机启动 echo "nohup /data/shell/nginx_status.sh &" >> /etc/rc.local
# 2020_11_03_teo
while :
do
ss -tnl | grep ":80" &>/dev/null
if [ $? -eq 0 ]; then
echo -e "\e[1;35mnginx is open\e[0m"
else
echo -e "\e[1;31mnginx is close\e[0m"
systemctl restart nginx
echo -e "\e[1;33mnginx is rsetart\e[0m"
fi
sleep 10s
done
##### 07. 批量添加防火墙规则 #######################
# 批量添加删除防火墙规则 端口存放在 同目录下的ipt.txt内
while read line
do
iptables -D IN_public_allow -p tcp --dport $line -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
iptables -D IN_public_allow -p udp --dport $line -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
done < ipt.txt
##### 08. 脚本跳板机 ###########################
# 脚本跳机
trap "" HUP INT OUIT TSTP
web1=192.168.10.10
web2=192.168.10.11
clear
while :
do
cat <<-EOF
+-----------------------------------+
| This is a jumpserver |
| 1. web1 |
| 2. web2 |
| 3. mysql1 |
| 4. mysql2 |
+-----------------------------------+
EOF
echo -en "\e[1;32minput number: \e[0m"
read num
case "$num" in
1)
ssh jump@$web1
;;
2)
ssh jump@$web2
;;
3)
ssh alice@$mysql1
;;
4)
ssh alice@$mysql2
;;
"")
;;
*)
echo "error"
esac
done
##### 09. 禁止海外ip访问 添加白名单####################
#防火墙 添加ip白名单 可以限制国外的ip访问
#国外ip汇总在 ip段所有国家.zip 地址 https://www.syk.my/download/ip段所有国家.zip
#先合并ip cat *.zone > white_ip.zone
iptables -F
iptables -X
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
while read ip
do
iptables -A INPUT -s $ip -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
echo $i
let i++
done < white_ip.zone
wait
#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
echo "iptables 已添加所有要允许的ip"
##### 10. 批量下载脚本 #################################
#!/bin/bash
#批量下载脚本
# url格式为 即可 保存到 a.txt
# https://basicenglishspeaking.com/wp-content/uploads/2016/audio/ce/E-26.mp3
# https://basicenglishspeaking.com/wp-content/uploads/2016/audio/ce/E-27.mp3
mydir=`pwd`
while read line
do
{
if [ -n "$line" ]
then
cd $mydir
url=$(echo "$line" | tr -d '\r')
picdir=$(echo $url | sed -r 's/http:\/\///g')
picname=$(echo ${picdir##*/})
picpath=$(echo ${picdir%/*})
mkdir -p $picpath
cd $picpath
wget -O $picname `echo $url`
fi
}
done < a.txt
exit 0
##### 11. 统计 单词出现的次数 #################################
#!/bin/sh
while read line
do
temp=`cat z.txt | grep -E "^$line "`
if [ $? -eq 0 ];then
i=`echo $temp | cut -d ' ' -f 2`
let i++
sed -i "/^$line/c$line $i" z.txt
else
echo $line 1 >> z.txt
fi
done < a.txt