实用的shell脚本合集

在这里插入图片描述

1、显示系统主机名、IP地址、子网掩码、网关、DNS等信息
#!/bin/bash
IP=`ifconfig eth0 | head -2 | tail -1 | awk '{print $2}'`
ZW=` ifconfig eth0 | head -2 | tail -1 | awk '{print $4}'`
GW=`route -n | tail -1 | awk '{print $2}'`
HN=`hostname`
DNS=`tail -1 /etc/resolv.conf | awk '{print $2}'`
echo '主机名是' $HN
echo 'IP地址是' $IP
echo '子网掩码是' $ZW
echo '网关是' $GW
echo 'DNS是' $DNS
2、查看192.168.1.0网段内ip使用情况
#!/bin/bash
ip=192.168.1.
j=0
for i in `seq 1 254`
do
ping -c 2 $ip$i &> /dev/null
if [ $? -eq 0 ];then
echo 在线的主机有:$ip$i
else
let j++
echo $ip$i >> ./ip.txt
date >> ./ip.txt
fi
done
echo 不在线的主机台数有 $j
3、批量创建用户,指定组,并设定不同的密码
#!/bin/bash
for i in `seq 1 50`
do
    useradd -G student student$i ; 
    echo student$i | passwd student$i --stdin;
done
4、找出占用CPU 内存过高的进程
#!/bin/bash
echo "-------------------CUP占用前10排序--------------------------------"
ps -eo user,pid,pcpu,pmem,args --sort=-pcpu  |head -n 10
echo "-------------------内存占用前10排序--------------------------------"
ps -eo user,pid,pcpu,pmem,args --sort=-pmem  |head -n 10
5、定时清空文件内容,并记录文件大小
#!/bin/bash
#每小时执行一次脚本(任务计划),当时间为0点或12点时,将目标目录下的所有文件内
#容清空,但不删除文件,其他时间则只统计各个文件的大小,一个文件一行,输出到以时#间和日期命名的文件中,需要考虑目标目录下二级、三级等子目录的文件
################################################################
logfile=/tmp/`date +%H-%F`.log
n=`date +%H`
if [ $n -eq 00 ] || [ $n -eq 12 ]
then
#通过for循环,以find命令作为遍历条件,将目标目录下的所有文件进行遍历并做相应操作
for i in `find /data/log/ -type f`
do
true > $i
done
else
for i in `find /data/log/ -type f`
do
du -sh $i >> $logfile
done
fi
6、将结果分别赋值给变量,以便后续使用
方法1:
for i in $(echo "4 5 6"); do
   eval a$i=$i
done
echo $a4 $a5 $a6

方法2:将位置参数192.168.1.1{1,2}拆分为到每个变量
num=0
for i in $(eval echo $*);do   #eval将{1,2}分解为1 2
   let num+=1
   eval node${num}="$i"
done
echo $node1 $node2 $node3

方法3:
arr=(4 5 6)
INDEX1=$(echo ${arr[0]})
INDEX2=$(echo ${arr[1]})
INDEX3=$(echo ${arr[2]})
7、检测网卡流量,并按规定格式记录在日志中
#!/bin/bash
#检测网卡流量,并按规定格式记录在日志中
#规定一分钟记录一次
#日志格式如下所示:
#2011-05-12 20:40
#ens33 input: 1234bps
#ens33 output: 1235bps
while :
do
#设置语言为英文,保障输出结果是英文,否则会出现bug
LANG=en
logfile=/tmp/`date +%d`.log
#将下面执行的命令结果输出重定向到logfile日志中
exec >> $logfile
date +"%F %H:%M"
#sar命令统计的流量单位为kb/s,日志格式为bps,因此要*1000*8
sar -n DEV 1 59|grep Average|grep ens33|awk '{print $2,"\t","input:","\t",$5*1000*8,"bps","\n",$2,"\t","output:","\t",$6*1000*8,"bps"}'
echo "####################"
done
8、自动调整网络配置
#!/bin/bash
#chkconfig: 35 80 90
#开机启动ip地址调整
ip=www.baidu.com
ping -c 3 $ip &>/dev/null
if  [ $? -eq 0 ]
 then
echo "可连接百度"
 else
 echo "正在更改网卡配置"
sed -ri '/^IPADDR=/cIPADDR=192.168.1.200' /etc/sysconfig/network-scripts/ifcfg-ens33
sed -ri '/^GATEWAY=/cGATEWAY=192.168.1.2' /etc/sysconfig/network-scripts/ifcfg-ens33
sed -ri '/^DNS1=/cDNS1=8.8.8.8' /etc/sysconfig/network-scripts/ifcfg-ens33
echo "网卡配置文件已改完  正在重启网络服务"
systemctl restart network
fi
ping -c 2 $ip &>/dev/null
if [ $? -eq 0 ] ;then
 echo "已完成"
 else
  echo "请检查你绑定的网卡是不是eth0"
fi

持续更新,建议收藏

猜你喜欢

转载自blog.csdn.net/langzi6/article/details/124957333