欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux脚本

程序员文章站 2022-12-04 11:55:22
编写脚本实现传入进程pid,查看对应进程/proc下CPU、内存指标 编写脚本实现每分钟检查一个主机端口是否存活(提示使用nmap),如果检查到端口不在线, sleep 10s ,如果三次都不存在,记录到日志 判断参数文件是否为一个以.sh为后缀的文件,如果是,加执行权限,如果不是,提醒用户 编写脚 ......

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

 1 #!/bin/bash
 2 read -p "please input pid to see cpu&mem infos: " pid
 3 checkpid=`ps aux | sed -nr "1! p" | tr -s " " | cut -d " " -f 2 | grep "$pid"`
 4 if [ ! $checkpid ];then
 5         echo "$pid" 'does not exit! please check and input a exit pid.'
 6 else
 7         echo "memory usage :"
 8         echo "`cat /proc/$pid/status | grep ^vm`"
 9         echo "cpu usage :"
10         echo "`cat /proc/$pid/status | grep ^cpu`"
11         echo "right now %cpu is`ps -p $pid -o pcpu | sed -nr "2p"`"
12 fi

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

 1 #!/bin/bash
 2 #ip=`ip addr|awk -f '[ /]+' 'nr==9 {print $3}'`
 3 read -p 'please input the host ip:' ip
 4 count=`nmap $ip| grep ^[[:digit:]]|wc -l`
 5 i=0
 6 while true;
 7 do
 8         if [ $count -eq 0 ];then
 9                 let i=i+1
10 #               echo $i
11                 if [ $i -ge 3 ];then
12                         echo $ip >> /data/nmap.log
13                         echo `nmap $ip`>> /data/nmap.log
14                         i=0
15 #                       echo $i
16                 fi
17                 sleep 10
18         else
19                 echo 'running'
20                 sleep 60
21         fi
22 done

判断参数文件是否为一个以.sh为后缀的文件,如果是,加执行权限,如果不是,提醒用户

 1 ##excute.sh
 2 
 3 #!/bin/bash
 4 
 5 if [ $# -lt 1 ];then
 6     echo please input a filename...
 7     exit 3
 8 elif [ -f $1 ];then
 9     if echo $1 | grep .sh &> /dev/null ;then
10             chmod +x $1
11             echo "modify $1 jurisdiction finished..."
12     else
13             echo "$1 not is script file..."
14     fi
15 else
16     echo "$1 not is common file..."
17 fi

编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统

 1 #!/bin/bash
 2 
 3 if [ ! -f "/etc/nologin" ];then
 4     touch /etc/nologin
 5     #echo "all user is not allow to login!"
 6 fi
 7 #!/bin/bash
 8 
 9 if [ -f "/etc/nologin" ];then
10     rm -f /etc/nologin
11     #echo "all user is allowed to login!"
12 fi

计算/etc/passwd 中第10行和第20行用户的uid之和

 1 ## sumid.sh
 2 
 3 #!/bin/bash
 4 
 5 id=`sed -nr '10,20s#.*:([0-9]+):[0-9].*#\1#p' /etc/passwd`
 6 num=(`echo $id`)
 7 for i in `seq 0 10`;do
 8     let sum+=${num[$i]}
 9 done
10 echo $sum