#!/bin/bash
#从端口列表中观测有没有没用的端口,有的话可以将该端口对应的服务关闭,防止意外的攻击可能性
ss -nutlp |awk ‘{print $1,$5}‘ | awk -F"[: ]" ‘{print "协议:"$1,"端口号:"$NF}‘ | grep "[0-9]" | uniq
# awk ‘{print $1,$5} 输出进程类型名,端口号
# awk -F"[: ]" ‘{print "协议:"$1,"端口号:"$NF}‘ 以[: ]为分隔符,打印第1列、最后1列
# grep "[0-9]" 加红
# uniq 去重
4. 统计Linux相关进程信息
#!/bin/bash
running=0
sleeping=0
stoped=0
zombie=0
#在 proc 目录下所有以数字开始的都是当前计算机正在运行的进程的进程 PID
#每个 PID 编号的目录下记录有该进程相关的信息
for pid in /proc/[1-9]*
do
procs=$[procs+1]
stat=$(awk ‘{print $3}‘ $pid/stat)
#每个 pid 目录下都有一个 stat 文件,该文件的第 3 列是该进程的状态信息
case $stat in
R)
running=$[running+1];;
T)
stoped=$[stoped+1];;
S)
sleeping=$[sleeping+1];;
Z)
zombie=$[zombie+1];;
esac
done
echo "进程统计信息如下"
echo "总进程数量为:$procs"
echo "Running 进程数为:$running"
echo "Stoped 进程数为:$stoped"
echo "Sleeping 进程数为:$sleeping"
echo "Zombie 进程数为:$zombie"
5. 获取本机MAC地址
#!/bin/bash
ip a s | awk ‘BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{print $2;getline;if($0~/link\/ether/){print $2}}‘ | grep -v lo:
#awk 读取 ip 命令的输出,输出结果中如果有以数字开始的行,先显示该行的地 2 列(网卡名称),
#接着使用 getline 再读取它的下一行数据,判断是否包含 link/ether
#如果保护该关键词,就显示该行的第 2 列(MAC 地址)
#lo 回环设备没有 MAC,因此将其屏蔽,不显示
例如:
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:b6:42:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.5/24 brd 192.168.2.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::2c29:7d20:6fda:84e0/64 scope link
valid_lft forever preferred_lft forever
6. 修改Linux最大打开文件数量
#!/bin/bash
#往/etc/security/limits.conf 文件的末尾追加两行配置参数,修改最大打开文件数量为 65536
cat >> /etc/security/limits.conf <<EOF
* soft nofile 65536
* hard nofile 65536
EOF
7. 编写脚本快速克隆KVM虚拟机
#!/bin/bash
#本脚本针对 RHEL7.2 或 Centos7.2
#本脚本需要提前准备一个 qcow2 格式的虚拟机模板,名称为/var/lib/libvirt/images/.rh7_template 的虚拟机模板
#该脚本使用 qemu-img 命令快速创建快照虚拟机
#脚本使用 sed 修改模板虚拟机的配置文件,将虚拟机名称、UUID、磁盘文件名、MAC 地址
IMG_DIR=/var/lib/libvirt/images
BASEVM=rh7_template
read -p "Enter VM number: " VMNUM
if [ $VMNUM -le 9 ];then
VMNUM=0$VMNUM #拼接
fi
if [ -z "${VMNUM}" ]; then #为空
echo "You must input a number."
exit 65
elif [ ${VMNUM} = ~ [a-z] ]; then #有字母
echo "You must input a number."
exit 66
elif [ ${VMNUM} -lt 1 -o ${VMNUM} -gt 99 ]; then # -o or
echo "Input out of range"
exit 67
fi
NEWVM=rh7_node${VMNUM} # node3..
if [ -e $IMG_DIR/${NEWVM}.img ]; then
echo "File exists." #镜像已存在
exit 68
fi
echo -en "Creating Virtual Machine disk image......\t" #提示正在创建...
qemu-img create -f qcow2 -b $IMG_DIR/.${BASEVM}.img $IMG_DIR/${NEWVM}.img &> /dev/null #创建前端盘
echo -e "\e[32;1m[OK]\e[0m" #提示OK
#virsh dumpxml ${BASEVM} > /tmp/myvm.xml #导出xml文件 或者
cat /var/lib/libvirt/images/.rhel7.xml > /tmp/myvm.xml
sed -i "/<name>${BASEVM}/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
sed -i "/uuid/s/<uuid>.*<\/uuid>/<uuid>$(uuidgen)<\/uuid>/" /tmp/myvm.xml
sed -i "/${BASEVM}\.img/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
#修改 MAC 地址,本例使用的是常量,每位使用该脚本的用户需要根据实际情况修改这些值
#最好这里可以使用便利,这样更适合于批量操作,可以克隆更多虚拟机sed -i "/mac /s/a1/0c/" /tmp/myvm.xml
echo -en "Defining new virtual machine......\t\t" #提示正在创建虚拟机
virsh define /tmp/myvm.xml &> /dev/null #创建虚拟机
echo -e "\e[32;1m[OK]\e[0m" #提示OK