平常写的一些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通

#!/bin/bash
for ip in `seq 1 255`
do
ping -c 1 192.168.1.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 192.168.1.$ip UP
else
echo 192.168.1.$ip DOWN
fi
}&
done

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

9. 判断本机服务是否正常,如果正常都不做,如果发现不正常,那么重启一下服务,并发邮件通知你自己。
脚本写好后,可以每一分钟执行一次,也可以写一个死循环的脚本,30s检测一次。
#!/bin/bash
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 小脚本集合相关推荐

  1. shell小脚本集合

    目录 0.vim脚本规范 1.猜数字 2.棋盘 3.九九乘法表 4.echo yes or no 5.复制Linux命令和库 6.斐波那契数列(兔子数列) 7.冒泡法排序 8.等腰三角形 9.生成证书 ...

  2. shell 获取 mysql 行数_一个Shell小脚本精准统计Mysql每张表的行数实现

    前言 对于开发或者运维人员来说,Mysql数据库每张表的数量肯定是要了解下,有助于我们清理无用数据或者了解哪张表比较占用空间. 另外多次统计表的行数,还能发现Mysql表的增量情况,能够预测表未来会有 ...

  3. 一键虚拟机关机/重启---远离重复---Shell小脚本

    项目场景: 解决了每次虚拟机关机或重启都需要手动一个个关机或重启的烦恼! 问题描述: 每天的学习工作结束,当需要关闭虚拟机时,VMware的一键关机或者重启无法起作用,于是写了个小脚本实现改功能 解决 ...

  4. Linux下Shell 备份脚本集合

    说到Shell大家都不陌生,Shell是Linux下批处理脚本文件,类似windows下的Vbs脚本等等,能协助我们完成一些自动化的任务,我们前面也介绍了一些Shell脚本协助我们完成了一些计划任务, ...

  5. Shell小脚本实现一键关机/重启虚拟机

    利用Shell脚本实现一键关机/重启虚拟机,解决每次虚拟机关机或重启都需要手动一个个关机或重启的烦恼! 1. 脚本一:shut.sh #!/bin/bash echo "传参:1关机,2重启 ...

  6. 创建用户的SHELL小脚本

    要求:需要添加的账号名称保存在/root/2.txt文件中,每行一个用户名.要求在执行uaddfor.sh脚本后,能够为这些用户名快速添加好系统账号,并将登录密码设置为1234567. 1 查看 /r ...

  7. 几个shell小脚本

    1.求100以内偶数和 #!/bin/bash let I=1 let SUM=0 while [ $I -le 100];do if [ (($I%2))-eq 0 ] then SUM=$(($S ...

  8. shell小脚本编辑

    石头剪刀布脚本 #!/bin/bash read -p "请输入布(0) 剪刀(1)石头(2):" key h=`echo $[RANDOM%3]` if [ $h = 0 ] t ...

  9. 阿里云域名动态IP解析Shell小脚本

    当你手里面有一个闲置的域名,有一个漂浮不定的外网ip,你又想在外网ip变更后自动解析到域名上,此情此景此脚本可能会帮上你. 更新日志 2020-09-29 支持IPV6解析(支持设置解析记录类型:A. ...

最新文章

  1. UI设计师面试如何操作才能获得高薪
  2. Java中Map类型数据使用LinkedHashMap保留数据的插入顺序
  3. asp控件Repeater运用
  4. 李航第一章课后习题答案
  5. node 遍历读取制定后缀文件名
  6. rabbit mq 入门
  7. 北理工远程教育在线作业统考计算机,北理工19春《操作系统》在线作业【标准答案】...
  8. UVA 10917 Walk Through the Forest 最短路 + DP
  9. 【狂神说Redis】1NoSQL概述 1-1为什么使用NoSQL
  10. 华夏联盟社会工程技术学习
  11. 谈谈功能测试与非功能测试(最详细)
  12. 云硬盘备份 | 概览
  13. Python爬虫-02 request模块爬取妹子图网站
  14. 特运tong app sign签名破解
  15. 数据抓取 | 数据分享 - 北京链家二手房成交数据抓取,保存格式为excel
  16. 调教ChatGpt看这一篇文章就够了
  17. 看盘做短线的10种方法(转)
  18. JVM源码系列:JVM内部运行之Class的Method
  19. IUV仿真IPTV配置
  20. python遍历多层嵌套列表_python遍历多层嵌套列表

热门文章

  1. 人才太缺!神州优车明修开放平台暗圈AI人才(附自动驾驶思路)
  2. 宠物小精灵 动态数组题目解析
  3. LSTC模型的应用场景有哪些?
  4. java es 如何查询_使用elasticsearch的java-api进行查询
  5. Lanbda表达式 java8新特性
  6. 5G点亮工业革命前,2021需要持续点亮5G
  7. lms算法的verilog实现_基于FPGA和LMS算法的系统建模
  8. MySQL全网最细总结
  9. 蓝绿发布、灰度发布(金丝雀发布) 和滚动发布
  10. android 高仿拼多多,Android 仿京东、拼多多商品分类页