Linux基础学习笔记3

本文介绍了如何在Linux中设置周期性计划任务,进行文件备份,以及限制用户权限。还涉及到使用locate和find命令查找文件,以及查找特定条件的文件。此外,讲解了SSH的免密登录配置,并创建用于添加用户和修改网络配置的脚本,包括验证IP地址、子网掩码、网关和DNS的输入。
摘要由CSDN通过智能技术生成

Linux基础学习笔记3

  1. 设置周期性计划任务,在8月份的每周3晚上的9点10分,自动备份/etc目录到tmp目录下,要求以时间的格式来命名,例如20220817
    在这里插入图片描述

  2. 仅允许user1使用一次性计划任务,拒绝user2使用周期性计划任务
    在这里插入图片描述

  3. 使用locate查找selinux的关键字的文件,显示查找到的前两个结果,无论大小写
    在这里插入图片描述

  4. 使用find查找/etc目录下占用空间大于5M的文件,并将文件的详细信息记录到/root/file.txt
    在这里插入图片描述

  5. 查找/home下拥有人是user1或者拥有组是user2的文件
    在这里插入图片描述

  6. 查找/home下拥有人不是root且拥有组不是user2的文件
    在这里插入图片描述

  7. 查找/etc目录下最近一周内其内容修改过,同时属主不为root的文件
    在这里插入图片描述

  8. 使用curl下载http://rhce.ytlinux.com:9999/demo.zip并另存文件为rhce.txt后查看该文件
    在这里插入图片描述

  9. 使用scp将crontab创建的计划任务上传到rhce@lab0.cn:/rhce下并重命名为你姓名的全拼
    在这里插入图片描述

  10. 配置ssh免秘钥登录,在你的练习机上配置免秘钥登录lab0.cn主机,该主机的用户名为redhat密码为Redhat@123,并执行last查看最近登录成功的记录
    在这里插入图片描述

  11. 创建一个名为/opt/user.sh的脚本,该脚本可以使用位置参数来实现添加用户如 user.sh zhangsan ,使用该脚本可以为添加的用户指定UID,如果UID用户已经存在则提示用户重新输入,如果用户输入root则直接退出脚本,退出状态码为10,并设置用户的密码为从命令行接收输入,检查用户输入的用户密码是否包含12345,如果包含则输出密码错误退出整个脚本,退出状态码设置为100。
    #! /bin/bash
    read -p “请输入用户名:” username
    read -p “请输入密码:” passwd
    read -p “请输入UID:” userid
    root_uid=0
    cat /etc/passwd | awk -F":" ‘{print $3}’ >/data/userid.txt
    cat /etc/passwd | awk -F":" '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' >/data/userna…(cat /data/userid.txt | grep “^KaTeX parse error: Expected 'EOF', got '#' at position 13: {userid}:") #̲echo "uid:uid”
    if [ “ u s e r n a m e " = " r o o t " ] ; t h e n e c h o " 不允许创建 r o o t 用户,程序即将退出 " e x i t 10 e l i f [ " username" = "root" ];then echo "不允许创建root用户,程序即将退出" exit 10 elif [ " username"="root"];thenecho"不允许创建root用户,程序即将退出"exit10elif["passwd” = “12345” ];then
    echo “密码错误(密码为弱密码),程序即将退出”
    exit 100

elif [ grep -c "$userid" $id_file -eq 1 ];then
read -p “当前用户UID已存在,请重新输入UID:” user_id
egrep “^$user_id” /etc/passwd >& /dev/null
if [ $? -ne 0 ];then

            useradd $username -p $passwd  -u $user_id
            echo "当前创建的用户名为: $username"
            echo "当前创建的用户密码为:$passwd"
            echo "当前创建的用户UID为:$user_id"
else
   		exit
fi

else
exit
fi
在这里插入图片描述
13. 编写一个名为/opt/network的脚本,该脚本允许用户自行输入IP地址和子网掩码以及网关和DNS网络信息,按照用户输入的网络信息配置本机的网络参数,如果用户输入的子网掩码不是24位则提醒用户确认,如果用户输入的IP地址为172.16.0.254,则提示用户该地址已经使用 。
#!/bin/bash

local_ip=ip a show ens160 | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $2,$NF}'
echo “参考的IP地址信息: $local_ip”
read -p “请输入IP地址:” ip
a1=echo $ip | awk -F '.' '{print $1}'
a2=echo $ip | awk -F '.' '{print $2}'
a3=echo $ip | awk -F '.' '{print $3}'
a4=echo $ip | awk -F '.' '{print $4}'
if [[ “$ip” =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]];then
if [ $a1 -le 255 -a $a2 -le 255 -a $a3 -le 255 -a $a4 -lt 256 ];then
if(( $a1 ==172 && $a2 == 16 && $a3 ==0 && $a4 == 254 ));then
echo “该地址已被使用”
exit
else
echo “IP地址输入正确”
fi
else
echo “IP地址输入错误”
exit
fi
else
echo “IP地址输入错误”
exit
fi
read -p “请输入子网掩码:” netmask
u1=echo $netmask | awk -F '.' '{print $1}'
u2=echo $netmask | awk -F '.' '{print $2}'
u3=echo $netmask | awk -F '.' '{print $3}'
u4=echo $netmask | awk -F '.' '{print $4}'
if [[ “$netmask” =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]];then
if [ $u1 -le 255 -a $u2 -le 255 -a $u3 -le 255 -a $u4 -lt 256 ];then
if [ $u1 -eq 255 -a $u2 -eq 255 -a $u3 -le 255 -a $u4 -eq 0 ];then
echo “子网掩码输入正确”
else
echo “子网掩码不为24位”
exit
fi
else
echo “子网掩码输入错误”
exit
fi
else
echo “网掩码输入错误”
exit
fi
read -p “请输入网关地址:” gateway
o1=echo $gateway | awk -F '.' '{print $1}'
o2=echo $gateway | awk -F '.' '{print $2}'
o3=echo $gateway | awk -F '.' '{print $3}'
o4=echo $gateway | awk -F '.' '{print $4}'
if [[ “$gateway” =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]];then
if [ $o1 -le 255 -a $o2 -le 255 -a $o3 -le 255 -a $o4 -lt 256 ];then
echo “网关地址输入正确”
else
echo “网关地址输入错误”
exit
fi
else
echo “网关地址输入错误”
exit
fi
read -p “请输入DNS地址:” dns
t1=echo $dns | awk -F '.' '{print $1}'
t2=echo $dns | awk -F '.' '{print $2}'
t3=echo $dns | awk -F '.' '{print $3}'
t4=echo $dns | awk -F '.' '{print $4}'
if [[ “$dns” =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]];then
if [ $t1 -le 255 -a $t2 -le 255 -a $t3 -le 255 -a $t4 -lt 256 ];then
echo “DNS输入正确”
else
echo “DNS输入错误”
exit
fi
else
echo “DNS输入错误”
exit
fi

echo “TYPE=‘Ethernet’
PROXY_METHOD=‘none’
BROWSER_ONLY=‘no’
DEFROUTE=‘yes’
BOOTPROTO=‘static’
IPADDR=‘ i p ′ G A T E W A Y = ′ ip' GATEWAY=' ipGATEWAY=gateway’
NETMASK=‘ n e t m a s k ′ D N S 1 = ′ netmask' DNS1=' netmaskDNS1=dns’” >/etc/sysconfig/network-scripts/ifcfg-256
systemctl restart NetworkManager
在这里插入图片描述在这里插入图片描述
14. 编写一个名为/opt/check.sh的脚本,检查ens160的IP和掩码是否为172.16.0.100/24,如果不是输出network set Error,如果是输出 ip is ok,如果IP正确掩码不正确,输出netmask Error,如果ip不正确掩码正确输出 ip set Error,检查DNS和网关是否为172.16.0.2,如果不是输出gateway Error或者dns Error,反之如果是则输出gateway Ok或者dns Ok。

#! /bin/bash

    local_ip=`ifconfig ens160 | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $2}'`
    echo "本地IP地址信息: $local_ip"
    p1=$(echo $local_ip|cut -d. -f1)
    p2=$(echo $local_ip|cut -d. -f2)
    p3=$(echo $local_ip|cut -d. -f3)
    p4=$(echo $local_ip|cut -d. -f4)

    netmask=`ifconfig ens160 | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $4}'`
    echo "本地子网掩码是: $local_ip"
    q1=$(echo $netmask|cut -d. -f1)
    q2=$(echo $netmask|cut -d. -f2)
    q3=$(echo $netmask|cut -d. -f3)
    q4=$(echo $netmask|cut -d. -f4)

    dns=`cat /etc/resolv.conf | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $2}'`
    echo "本地dns是:$dns"
    d1=$(echo $dns|cut -d. -f1)
    d2=$(echo $dns|cut -d. -f2)
    d3=$(echo $dns|cut -d. -f3)
    d4=$(echo $dns|cut -d. -f4)

    gateway=`ip route show | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $3}' | head -n 1`
    echo "本地网关是:$gateway"
    g1=$(echo $gateway|cut -d. -f1)
    g2=$(echo $gateway|cut -d. -f2)
    g3=$(echo $gateway|cut -d. -f3)
    g4=$(echo $gateway|cut -d. -f4)

if (( $p1 == 172 && $p2 == 16 && $p3 == 0 && $p4 == 100 ));then
            if (( $q1 ==255 && $q2 == 255 && $q3 ==255 && $q4 == 0 ));then
                    echo "ip is ok"
            else
                    echo "network set error"
                    exit
            fi
    elif (( $p1 ==172 && $p2 == 16 && $p3 ==0 && $p4 == 100 ));then
             if (( $q1 !=255 && $q2 != 255 && $q3 !=255 && $q4 != 0 ));then
                      echo "netmask error"
             else

                      exit
             fi

    elif(( $q1 ==255 && $q2 == 255 && $q3 ==255 && $q4 == 0 ));then
               if (( $p1 !=172 && $p2 != 16 && $p3 !=0 && $p4 !=100 ));then
                        echo "ip set Error"
                else
                        echo "netmask ok"
                        exit
                fi
     elif(( $d1 ==172 && $p2 == 16 && $p3 ==0 && $p4 == 2 ));then
              if(( $g1 ==255 && $g2 == 255 && $g3 ==255 && $g4 == 0 ));then
                      echo "gateway is ok or dns ok"
              else
                      echo "gateway Error or dns Error"
                      exit
              fi
    else
             echo "gateway Error or dns Error"
      fi
  1. 编写脚本/opt/host.sh,执行该脚本可以自动检查当前局域网192.168.0.0/24这个子网内的254台主机,将IP存活的主机地址保存到文件/opt/ip.txt中,但是该存活主机列表不得包含该子网的网关192.168.0.254,如果脚本检测到254的主机地址将跳过本次检测。
    #!/bin/bash

for i in {1…255}
do
if [ i − n e 254 ] ; t h e n i f p i n g − c 1 − W 1192.168.123. i -ne 254 ];then if ping -c 1 -W 1 192.168.123. ine254];thenifpingc1W1192.168.123.i &>/dev/null ;then
echo “192.168.123. i i s u p " e c h o " 192.168.123. i is up" echo "192.168.123. iisup"echo"192.168.123.i” >>ip_up.txt
else
echo “192.168.123. i i s d o w n " e c h o " 192.168.123. i is down" echo "192.168.123. iisdown"echo"192.168.123.i” >>ip_down.txt
fi

else
	echo "192.168.123.$i 不检测"
	exit
fi

done
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值