首页 > 系统服务 > 详细

shell脚本

时间:2020-01-10 20:49:11      阅读:69      评论:0      收藏:0      [点我收藏+]

1. 判断文件或目录是否存在

#!/bin/bash
if [ $# -eq 0 ] ;then
   echo "未输入任何参数,请输入参数"
   echo "用法:$0 [文件名|目录名]"
fi

if [ -f $1 ];then
    echo "该文件,存在"
    ls -l $1
else
    echo "没有该文件"
fi

if [ -d $1 ];then
    echo "该目录,存在"
    ls -ld $2
else
    echo "没有该目录"
fi

2. 无密码登录虚拟机系统

#!/bin/bash
#该脚本使用 guestmount 工具,Centos7.2 中安装 libguestfs-tools-c 可以获得 guestmount 工具

read -p "请输入虚拟机名称:" name
if virsh domstate $name | grep -q running ;then

# virsh domstate 显示虚拟机当前状态
# grep -q running 查找到running字符串
    echo "破解,需要关闭虚拟机"
    virsh destroy $name
fi

mountpoint="/media/virtimage"
[ ! -d $mountpoint ]  && mkdir $mountpoint
     echo "请稍后..."
if mount | grep -q "$mountpoint" ;then
     umount $mountpoint
fi

guestmount -d $name -i $mountpoint
#将 passwd 中密码占位符号 x 删除,该账户即可实现无密码登陆系统
sed -i "/^root/s/x//" $mountpoint/etc/passwd

3. 显示本机Linux系统所有开放端口列表

#!/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

 

shell脚本

原文:https://www.cnblogs.com/mkmkmk/p/12177924.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!