Skip to content

常用 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"