常用 Shell 脚本整理
一、批量域名解析
说明:批量域名进行域名解析,返回解析结果。
sh
1、创建域名文档
创建要批量解析测试的域名,名称为 domainname.txt 。
注意:名称为一定要为domainname.txt,并且个脚本在同一个路径下。
域名文档内容根据情况进行填写,示例如下:
baidu.com
whbblog.cn
aaa.com
2、创建脚本
3、执行脚本
在执行脚本时一定要使用 -d 参数 ,后面跟要进行域名解析的 DNS 服务器,示例如下:
bash script_name.sh -d 192.168.1.1
sh
#!/bin/bash
#Author:Hongbao Wang
#Date:2021/12/07
#Description:This script performs batch domain name resolution.
function resolve()
suss=0
fail=0
for dn in $(cat domainname.txt)
do
nslookup ${dn} -timeout=1 $OPTARG >/dev/null 2>&1
if [ $? == 0 ]
then
echo "${dn} resolve Succeeded!"
((suss++))
else
echo "${dn} resolve Failed!"
((fail++))
fi
done
echo "----------------------------------------------"
echo "DNS Resolve Finish, Success : $suss , Failed : $fail"
}
function usage(){
echo "Usage: -d <dns resolve address> : Input DNS resolve address"
echo "Example : $0 -d 192.168.1.1"
}
nargs=$#
if [ $nargs -eq 0 ] ; then
usage
fi
while getopts ":d:" OPT &> /dev/null ;do
case $OPT in
d)
resolve $OPTARG;;
*)
echo "Parameter input error!"
usage
exit 1;;
esac
done
二、F5 SNAT Pool 成员流量组切换
sh
实现目的:将 SNAT Pool 中的成员从 traffic-group-1 变更到 traffic-group-2。
需要根据情况手动变更以下位置,
SNAT Pool Name:test_snatpool
Traffic-group:traffic-group-2
tab名字为第一个Tab
sh
for snatpool_member in `tmsh list ltm snatpool test_snatpool members | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|:'|awk '{print $1}'`;do tmsh modify ltm snat-translation ${snatpool_member} traffic-group traffic-group-2;[[ $? -eq 0 ]] && echo "$snatpool_member --> Success " || "$snatpool_member --> Failed";done
三、F5 批量增加处理 Partition 中 pool 中 poolmember
sh
在 partition `dmz_partitio`n 下 pool `dmz_pool` 中 增加 `10.252.55.144%2:7058` `10.252.55.145%2:7058` `10.252.55.148%2:7058` 三个新成员。
需要修改配置如下:
dmz_partition : partition名称
dmz_pool : pool 名称
%2 : domain id
144 145 148 : 变量,在下面`$i`进行调用
sh
for i in 144 145 148 ; do tmsh modify ltm pool /dmz_partition/dmz_pool members add { 10.252.55.$i%2:7058 { address 10.252.55.$i%2 } } ; done
四、CentOS 7 部署 FTP 服务器
sh
该脚本用于自动部署 FTP 服务,并添加用户,如果需要添加多个用户,可以多次执行脚本。
sh
# /bin/bash
# File : install_ftp.sh
# Time : 2023/03/02 11:16:00
# Author : whb
# Version : 0.1
# License : (C)Copyright 2021-2023, MIT
# Desc : CentOS Auto Install FTP Server
# 开始
echo "************************************************"
# 安装 FTP 服务
yum -y install vsftpd
# 创建FTP用户
read -p "请输入新建ftp用户名:" username
read -p "请输入新建ftp密码:" pwd
useradd $username
echo "${pwd}" | passwd --stdin $username
echo $username >> /etc/vsftpd/user_list
# 不允许匿名用户写操作
sed -i 's/anon_other_write_enable=YES/#anon_other_write_enable=YES/g' /etc/vsftpd/vsftpd.conf
# 不允许匿名用户上传文件
sed -i 's/anon_upload_enable=YES/#anon_upload_enable=YES/g' /etc/vsftpd/vsftpd.conf
cat >> /etc/vsftpd/vsftpd.conf <<EOF
# 登录白名单
userlist_enable=YES
userlist_deny=NO
# 禁用 dns 解析
reverse_lookup_enable=NO
# 配置本地根路径
local_root=/var/ftp/pub
EOF
# 关闭防火墙及 selinux
systemctl stop firewalld;systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
getenforce
# 开启FTP
systemctl enable vsftpd
systemctl start vsftpd
# 创建测试文件
echo "test" > /var/ftp/pub/test.txt
# 结束
echo "******************ftp安装完成,请切记以下信息*******************"
echo "用户名:$username"
echo "密码:$pwd"
echo "端口:21"