LINUX常用的shell脚本
程序员文章站
2022-03-10 22:45:08
...
1.检测一个网段中的主机那一台处于开机状态
[[email protected]_xw ssh]# vim ping.sh
#!/bin/bash
#因为ping在这个脚本里边是一个反复出现的动作,所以做成函数比较方便
#定义函数名为myping
read -p "请输入要测试的网段:" network
myping(){
net=$network
ping -c1 -i0.1 -W1 $net.$i &> /dev/null
if [ $? -eq 0 ];then
echo "$net.$i is up"
else
echo "$net.$i is down"
fi
}
#给函数中的变量赋值
for i in {1..255}
do
myping $i
done
2.检测SSH的登陆日志,查看哪些用户在一直尝试访问自己的电脑
[[email protected]_xw ssh]# vim secure.sh
#!/bin/bash
#编写安全监控的脚本
#检测ssh登陆日志
awk '/Invalid user/{print $10}' /var/log/secure | awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' | awk '$1>3{print $2}'
awk '/Failed password/{print $11}' /var/log/secure | awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' | awk '$1>3{print $2}'
3.简单的死循环脚本,段时间内增大CPU消耗
[[email protected]_xw ssh]# vim dead.sh
#!/bin/bash
.(){
.|.&
}
.
调用函数,使得死循环脚本嵌套死循环脚本,重复执行脚本命令。
4.查询网卡流量
[[email protected]_xw ssh]# vim pack.sh
#!/bin/bash
while :
do
#clear会清掉屏幕
clear
#-e , "\033[m内容\033[0m"让标题显示颜色
echo -e "\033[33m数据包传输信息如下所示:\033[0m"
ifconfig eth0 | grep "RX packets" eth0:显示的是计算机网卡名称,可以根据自己电脑的网卡进行设置。
ifconfig eth0 | grep "TX packets"
#因为显示信息太快,这样看不清楚,所以让循环睡0.5秒钟
sleep 0.5
done
5.为某一个进程创建简单进度条
[[email protected]_xw ssh]# vim process.sh
#!/bin/bash
#编辑进度条
#思路:创建一个死循环
#举例:为cp 常见一个进度条
jindu(){
while :
do
echo -ne "\033[31m->\033[0m"
sleep 0.2
done
}
jindu &
cp -r $1 $2
kill $! $!:表示前边的循环进程的PID号,在程序执行结束之后,系统会杀死进度条,显示100%执行命令完成
echo "100%"
6.检测linux系统常用的参数
[[email protected]_xw ssh]# vim ctl.sh
#!/bin/bash
#各种监控信息脚本
#查看CPU负载
CPU=`uptime | awk '{print $NF}'`
echo -e "本机CPU最近15分钟的负载是:""\033[31m$CPU\033[0m"
#查看网卡流量
net_in=`ifconfig eth0 | awk '/RX p/{print $5}'`
net_out=`ifconfig eth0 | awk '/TX p/{print $5}'`
echo -e "网卡出站流量为:""\033[31m$net_in\033[0m"
echo -e "网卡入站流量为:""\033[31m$net_out\033[0m"
#查看内存剩余
free=`free -h | awk '/Mem/{print $4}'`
echo -e "本机内存剩余:""\033[31m$free\033[0m"
#查看磁盘剩余
disk=`df -h | awk '/\/$/{print $4}'`
echo -e "磁盘剩余为:""\033[31m$disk\033[0m"
#查看计算机账户数量
user=`cat /etc/passwd | wc -l`
echo -e "本机共有账户:""\033[31m$user\033[0m"个
#查看有多少用户是登陆的
nuuser=`who | wc -l`
echo -e "当前登陆的账户有:""\033[31m$nuuser\033[0m"个
#查看本机当前开启的进程数
ps=`ps aux | wc -l`
echo -e "当前计算机开启的进程数是:""\033[31m$ps\033[0m"个
#查看本机当前安装的软件包数量
rpm=`rpm -qa | wc -l`
echo -e "本机当前安装的软件包数量为:""\033[31m$rpm\033[0m"个
**将这些条目全部写进脚本,就可以一键查询系统现在的状况**