[关闭]
@wyjgd 2019-09-22T16:54:53.000000Z 字数 1211 阅读 516

shell脚本练习


实现传入进程pid,查看对应进程/proc下cpu、内存指标

  1. #!/bin/bash
  2. read -p "pid number:" a
  3. pid=`ps aux | awk '{print $2}'|grep -w $a`
  4. if [ ! $pid ];then
  5. echo "input is wrong"
  6. else
  7. echo "Mem:`cat /proc/$pid/status |egrep ^Vm`"
  8. echo "CPU:`ps -eo pid,%cpu|egrep -w $pid`"
  9. fi

实现每分钟检查一个主机端口是否存活(使用nmap),如果检查到端口不在线,sleep 10s,如果三次都不存在,记录到日志

  1. #!/bin/bash
  2. read -p "please input ip eg(192.168.1.1):" ip
  3. read -p "need check port:" port
  4. for i in {1..3};do
  5. nmap -sS $ip | awk '{print $1}'|egrep [[:digit:]]|awk -F/ '{print $1}'|grep -w $port &> /dev/null
  6. if [ `echo $?` -ne 0 ];then
  7. sleep 2
  8. echo "$ip $port is not online">/root/check.txt && echo "Wrong!please cat /root/check.txt"
  9. else
  10. echo "$ip $port is online"
  11. fi
  12. done
  13. crontab -e -uroot
  14. */1 * * * * /root/port.sh

判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件

  1. #!/bin/bash
  2. if [ ! -f $1 ];then
  3. echo "$1 is wrong(not exist or not sh$ file)"
  4. elif [[ $1 =~ .*sh$ ]];then
  5. chmod +x $1;
  6. echo "add x power over"
  7. fi

实现禁止和允许所有普通用户登录系统

  1. #!/bin/bash
  2. read -p "Do you want to lock usually users:yes or no" y
  3. if [[ $y == yes || $y == y ]];then
  4. touch /etc/nologin
  5. echo "locked"
  6. else
  7. rm -rf /etc/nologin
  8. echo "opened"
  9. fi

计算/etc/passwd文件中第10个和第20个用户的ID之和

  1. #!/bin/bash
  2. a=`getent passwd| awk -F: '{print $3}'|sed -n '10p'`
  3. b=`getent passwd| awk -F: '{print $3}'|sed -n '20p'`
  4. c=`getent passwd| awk -F: '{print $4}'|sed -n '10p'`
  5. d=`getent passwd| awk -F: '{print $4}'|sed -n '20p'`
  6. echo "sum.uid=$[a+b]"
  7. echo "sum.gid=$[c+d]"
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注