Linux入门-第七周 1、编写脚本实现传入进程PID,查看对应进程/proc下CPU、内存指标。 2、编写脚本实现每分钟检查一个主机端口是否存活(提示使用nmap),如果检查到的端口不在线,sleep 10s,如果三次都不存在,记录到日志。 3、编写脚本/root/bin/excute.sh ,判断参数文件是3否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件 4、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和允许普通用户登录系统 5、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20个用户的ID之和

Linux入门-第七周
1、编写脚本实现传入进程PID,查看对应进程/proc下CPU、内存指标。
2、编写脚本实现每分钟检查一个主机端口是否存活(提示使用nmap),如果检查到的端口不在线,sleep 10s,如果三次都不存在,记录到日志。
3、编写脚本/root/bin/excute.sh ,判断参数文件是3否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
4、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和允许普通用户登录系统
5、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20个用户的ID之和

 1 #!/bin/bash
 2 read -p "Input PID Value: " pid                         #读取PID进程号
 3 pid_exist=`ps aux|awk '{print $2}'|grep -w $pid`      #定义一个字符串,通过grep命令,显示当前查找所有用户所有程序并打印出来
 4 if [ ! $pid_exist  ];then                               #如果pid不存在,然后
 5         echo "$pid is not exist!!"              #输出pid is not exist!!
 6 else                                #否则
 7         echo "Memory Usage :"                 #输出内存使用情况
 8         cat /proc/$pid/status | grep ^Vm            #通过grep命令进行精确查找用cat命令查看到/proc下pid进程物理内存使用状态
 9         echo "Cpu Usage : "                       #输出CPU使用情况
10         echo "  PID    LWP   CPU% :"                #输出PID LWP CPU%情况
11         ps  -eLo pid,lwp,pcpu | grep $pid             #使用grep命令筛选出用ps -eLo命令查看到的pid进程的pid,lwp,pcpu信息
12 fi                                  #结束

关于/proc/$PID/status中的各种参数表示意义,见此文章

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

 1 #!/bin/bash
 2 var1=`nmap 118.24.208.144`                                   #定义var1为一个主机IP
 3 var2=`nmap 118.24.208.144 | grep ^[0-9] | awk '{print $2}'| wc -l`           #定义var2为一个主机IP,使用grep查看端口号,然后通过awk命令筛选第二列关键字,用wc命令统计数量
 4 for i in {1..3}; do                                      #定义尝试次数i为1-3;然后
 5         echo 'Execute '$i' times'                              #输出Execute 次数 时间
 6         if [ $var2 -eq 0 ];then                                #如果var2等于0,那么
 7              sleep 1s                                      #休眠1秒
 8         else                                           #否则
 9             echo $var1 >> nmap.log                             #输出var1参数至nmap.log
10         fi                                             #
11 done                                               #脚本完成

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

 1 #!/bin/bash
 2 read -p "Please input a filename: " file      #使用read命令,接收来自键盘输入的file参数
 3 if [[ $file =~ .*sh$ ]] ; then            #如果file文件名为.sh结束的文件,然后
 4         if [ -f $file ] ; then            #-f 表示忽略不存在的文件,然后
 5                 chmod a+x $file             #文件存在,则给文件加x权限
 6                 echo "success"            #输出success
 7         fi                        #
 8 else                            #否则
 9         echo '非脚本文件'                  #输出非脚本文件
10 fi                              #

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

  login.sh

1 #!/bin/bash
2 [ -f /date/nologin ] && (rm -f /data/nologin;echo " delete /data/nologin success") || echo "already can access"

  nolog.sh

1 #!/bin/bash
2 [ -f /data/nologin ] && echo "already can not access"||(touch /data/nologin $$echo "create  /data/nologin success")

5、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20个用户的ID之和

1  #!/bin/bash
2  var1=`cat /etc/passwd | head -n10 | tail -n1 | cut -d: -f3`    #定义var1为/etc/passwd文件第10行的第三列字符串的值
3  var2=`cat /etc/passwd | head -n20 | tail -n1 | cut -d: -f3`    #定义var2为/etc/passwd文件第20行的第三列字符串的值
4  let var3=var1+var2                             #使用let命令计算var1+var2=var3的值
5  echo "sumid: $var3"                            #输出sumid的结果