Shell 小脚本集合
平常写的一些shell小脚本,主要是自己练习或者突发奇想写的。
1.显示出每一用户的shell
#!/bin/bash
File=/etc/passwd
UserCount=$(cat ${File} | wc -l)
for i in `seq 1 ${UserCount}`
do
# echo $i
User=$(cat ${File} | head -n $i | tail -n -1 | cut -d : -f 1)
Sh=$(cat ${File} | head -n $i | tail -n -1 | cut -d : -f 7)
echo "User:" ${User} " Shell:" ${Sh}
done
2.检查某个用户是否登入,使用until
#!/bin/bash
until who | grep $1 &> /dev/null
do
sleep 3
echo "$1 not login in"
done
echo "$1 login"
3.shell批量添加删除用户,用户格式可以不统一
#!/bin/bash
for I in `seq 1 $#`
do
if [ $# -gt 0 ]
then
case $1 in
-v|--verbose)
echo "---v"
shift
;;
-h|--help)
echo "`basename $0` -v|--verbose --add userlist , --del userlist ,"
shift
;;
--add)
tmp=$2
for user in `echo $tmp | sed 's#,# #g'`
do
echo ${user}
done
shift 2
;;
--del)
tmp=$2
for user in `echo $tmp | sed 's#,# #g'`
do
echo ${user}
done
shift 2
;;
*)
echo "`basename $0` -v|--verbose --add userl ist , --del userlist ,"
;;
esac
fi
done
4.接收选择,查看信息(利用while和case,cat)
#!/bin/bash
cat << EOF
d|D)Show disk usages
m|M)Show memory usages
s|S)Show swap usages
*)Quit
EOF
read -p "Input your choice " choice
while [ ${choice} != "quit" ]
do
# echo "test"
case ${choice} in
d|D)
df -hP
;;
m|M)
free -h | grep -E "Mem|total"
;;
s|S)
free -h | grep -E "Swap|total"
;;
q|Q)
exit
;;
*)
echo "Usage: D M S Q "
esac
read -p "Input your choice again " choice
done
5.shell读取文件的写法,可以对每一行做后续处理
#!/bin/bash
cat /etc/passwd| while read line
do
echo ${line} #####做后续处理
done
6.批量检测用户是否可以登入(前提是配置好了密钥认证)
#!/bin/bash
for i in `cat ip.list`
do
ssh root@${i} "ls" > /dev/null 2>&1
if [ $? -eq 0 ];then
echo "$i" sucess
else
echo "$i" error
fi
done
echo "Erase ip.list!!!! please write it next "
echo >ip.list
7.批量检测是否可以ping通
8.监控cpu,内存
#!/bin/bash
ip=$(ifconfig eth1 | grep "inet addr:" | awk -F ":" '{print $2} '
)
time=$(date +%Y%m%d-%H:%M)
log_name="monite.log.${time}"
mailto="xxxxxxx"
function check_cpu()
{
echo "---------------cpu----------------">>${log_name}
us=$(vmstat |tail -n 1 | awk '{print $13}')
sy=$(vmstat |tail -n 1 | awk '{print $14}')
idle=$(vmstat |tail -n 1 | awk '{print $15}')
wait1=$(vmstat |tail -n 1 | awk '{print $16}')
all_use=$(($us+$sy))
if [ ${all_use} -ge 50 ];then
echo "cpu user >50,is ${all_use}" >>${log_name}
echo "idle is ${idle}" >>${log_name}
echo "wait1 is ${wait1}" >>${log_name}
echo "$ip ,cpu use >50 " | mail -s "$ip,CPU >50" ${mailto}
fi
echo "----------------------------------">>${log_name}
}
function check_ram()
{
echo "---------------ram----------------">>${log_name}
all=$( free | grep Mem | awk '{print $2 }')
use=$( free | grep Mem | awk '{print $3 }')
free1=$( free | grep Mem | awk '{print $4 }')
if [ ${free1} -le 1024 ];then
echo "$ip all=${all},use=${use},free ram =${free1}" >>${log_name}
echo "$ip all=${all},use=${use}, free ram =${free1}" | mail -s "ram <1G" ${mailto}
fi
echo "----------------------------------">>${log_name}
}
function main()
{
check_cpu
check_ram
}
main
mailto='xxxx'
day=`date +%Y%m%d`
function isLive
{
ser=(httpd nginx) ####这里可以添加进相关的服务
for i in ${ser[*]}
do
ser_stat=$(ps -ef | grep $i| grep -v grep | wc -l)
if [ ${ser_stat} -eq 0 ];then
now=`date +%Y%m%d-%H:%M`
echo ${now} >>/tmp/ser_restart_${day}.log
/etc/init.d/$i restart 2&>1 >>/tmp/ser_restart_${day}.log
echo "service $i is unnoraml in ${now}" | mail -s $i ${mailto}
fi
done
}
isLive
10. kill 监听指定端口的进程
lsof -i:$1 | grep -v "COMMAND" | awk -F " " '{print $2}' | xargs kill -9
Shell 小脚本集合相关推荐
- shell小脚本集合
目录 0.vim脚本规范 1.猜数字 2.棋盘 3.九九乘法表 4.echo yes or no 5.复制Linux命令和库 6.斐波那契数列(兔子数列) 7.冒泡法排序 8.等腰三角形 9.生成证书 ...
- shell 获取 mysql 行数_一个Shell小脚本精准统计Mysql每张表的行数实现
前言 对于开发或者运维人员来说,Mysql数据库每张表的数量肯定是要了解下,有助于我们清理无用数据或者了解哪张表比较占用空间. 另外多次统计表的行数,还能发现Mysql表的增量情况,能够预测表未来会有 ...
- 一键虚拟机关机/重启---远离重复---Shell小脚本
项目场景: 解决了每次虚拟机关机或重启都需要手动一个个关机或重启的烦恼! 问题描述: 每天的学习工作结束,当需要关闭虚拟机时,VMware的一键关机或者重启无法起作用,于是写了个小脚本实现改功能 解决 ...
- Linux下Shell 备份脚本集合
说到Shell大家都不陌生,Shell是Linux下批处理脚本文件,类似windows下的Vbs脚本等等,能协助我们完成一些自动化的任务,我们前面也介绍了一些Shell脚本协助我们完成了一些计划任务, ...
- Shell小脚本实现一键关机/重启虚拟机
利用Shell脚本实现一键关机/重启虚拟机,解决每次虚拟机关机或重启都需要手动一个个关机或重启的烦恼! 1. 脚本一:shut.sh #!/bin/bash echo "传参:1关机,2重启 ...
- 创建用户的SHELL小脚本
要求:需要添加的账号名称保存在/root/2.txt文件中,每行一个用户名.要求在执行uaddfor.sh脚本后,能够为这些用户名快速添加好系统账号,并将登录密码设置为1234567. 1 查看 /r ...
- 几个shell小脚本
1.求100以内偶数和 #!/bin/bash let I=1 let SUM=0 while [ $I -le 100];do if [ (($I%2))-eq 0 ] then SUM=$(($S ...
- shell小脚本编辑
石头剪刀布脚本 #!/bin/bash read -p "请输入布(0) 剪刀(1)石头(2):" key h=`echo $[RANDOM%3]` if [ $h = 0 ] t ...
- 阿里云域名动态IP解析Shell小脚本
当你手里面有一个闲置的域名,有一个漂浮不定的外网ip,你又想在外网ip变更后自动解析到域名上,此情此景此脚本可能会帮上你. 更新日志 2020-09-29 支持IPV6解析(支持设置解析记录类型:A. ...
最新文章
- UI设计师面试如何操作才能获得高薪
- Java中Map类型数据使用LinkedHashMap保留数据的插入顺序
- asp控件Repeater运用
- 李航第一章课后习题答案
- node 遍历读取制定后缀文件名
- rabbit mq 入门
- 北理工远程教育在线作业统考计算机,北理工19春《操作系统》在线作业【标准答案】...
- UVA 10917 Walk Through the Forest 最短路 + DP
- 【狂神说Redis】1NoSQL概述 1-1为什么使用NoSQL
- 华夏联盟社会工程技术学习
- 谈谈功能测试与非功能测试(最详细)
- 云硬盘备份 | 概览
- Python爬虫-02 request模块爬取妹子图网站
- 特运tong app sign签名破解
- 数据抓取 | 数据分享 - 北京链家二手房成交数据抓取,保存格式为excel
- 调教ChatGpt看这一篇文章就够了
- 看盘做短线的10种方法(转)
- JVM源码系列:JVM内部运行之Class的Method
- IUV仿真IPTV配置
- python遍历多层嵌套列表_python遍历多层嵌套列表