美文网首页
第八周 第九周作业

第八周 第九周作业

作者: 念念OPS | 来源:发表于2020-12-16 01:17 被阅读0次

    第八周

    1、显示统计占用系统内存最多的进程,并排序。
    2、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
    3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
    4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高于80%,就发送邮件报警

    1、显示统计占用系统内存最多的进程,并排序。
    expect]# ps aux k -%mem
    倒序排序
    
    2、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
    #for
    #!/usr/bin/bash
    NET=192.168.0.
    for ((IP=1;IP<=254;IP++));do
        { if ping ${NET}$IP -c1 -W1 &>/dev/null ;then
            echo "host ${NET}$IP is success!"
        else
            echo "host ${NET}$IP is fail!"
        fi
        }&
    done
    wait
    
    #while
    NET=192.168.0.
    IP=1
    while [ $IP -le 254 ];do 
        {
        ping -c1 -W1 ${NET}$IP &> /dev/null && echo "$NET$IP success" || echo "$NET$IP fail"
        }&
        let IP++
    done
    wait
    
    
    3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
    cat > /data/scripts/backup_etc.sh <<EOF
    #!/usr/bin/bash
    tar -cJfP /backup/etcbak-`date -d -1day +%F-%H`.tar.xz /etc 1>/dev/null 2>&1
    EOF 
    
    chmod u+x /data/scripts/backup_etc.sh
    
    cat >> /var/spool/cron/root << EOF
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
    30 1 * * 1-5 /data/scripts/backup_etc.sh &>/dev/null
    EOF
    
    cron]# crontab -l
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
    30 1 * * 1-5 /data/scripts/backup_etc.sh
    
    #建议使用crontab -e 毕竟普通用户就不是/var/spool/cron/root了
    
    4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高于80%,就发送邮件报警
    
    思路:写个脚本,while read接受重定向输入,赋值变量DEVICE和USE 然后邮件告警,最后写定时任务
    df -h|sed -rn '/^\/dev\/sd*/ s#(^.*[0-9] ).* ([0-9]+)% .*#\1 \2#p'
    /dev/sda2  7
    /dev/sda5  2
    /dev/sda1  93
    
    cat > /data/scripts/while/while_read_check_disk.sh <<EOF
    #!/usr/bin/bash
    WARNING=80
    df -h | sed -rn '/^\/dev\/sd*/ s#(^.*[0-9] ).* ([0-9]+)% .*#\1 \2#p' | while read DEVICE USE; do
        if [ \$USE -ge \$WARNING ]; then
            echo "Disk warning,\`hostname -I\` \$DEVICE  use \${USE}% will be full !!" | mail -s "Disk warning" 2320036424@qq.com
        fi
    done
    EOF
    
    
    
    chmod u+x /data/scripts/while/while_read_check_disk.sh
    cat >> /var/spool/cron/root <<EOF
    */10 * * * * /data/scripts/while/while_read_check_disk.sh &>/dev/null
    EOF
    
    ~]# crontab -l
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
    30 1 * * 1-5 /data/scripts/backup_etc.sh
    */10 * * * * /data/scripts/while/while_read_check_disk.sh &>/dev/null
    

    第九周

    1、编写脚本,接受二个位置参数,magedu和/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www
    2、使用expect实现自动登录系统。
    3、简述linux操作系统启动流程
    4、破解centos7 密码。

    1、编写脚本,接受二个位置参数,magedu和/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www
    cat > /data/scripts/useradd1.sh <<EOF
    #!/usr/bin/bash
    if [ \$# -ne 2 ];then
        echo "请输入两个位置参数" && exit 1
    fi
    
    if [ \$1 == "magedu" -a \$2 == "/www" ];then 
            id \$1 &>/dev/null && { echo "\$1 is existed";exit 1; } || useradd -d \$2 \$1 &>/dev/null
    else 
            echo "请输入正确参数" && exit 1
    fi
    EOF
    
    #验证
    #只输入一个参数
    root@test8  ~]# bash /data/scripts/useradd1.sh magedu
    请输入两个位置参数
    
    #输入两个错误参数
    root@test8  ~]# bash /data/scripts/useradd1.sh magedu a
    请输入正确参数
    
    #输入正确参数
    root@test8  ~]# bash /data/scripts/useradd1.sh magedu /www
    root@test8  ~]# id magedu
    uid=1001(magedu) gid=1001(magedu) groups=1001(magedu)
    root@test8  ~]# getent passwd magedu
    magedu:x:1001:1001::/www:/bin/bash
    
    
    
    2、使用expect实现自动登录系统。
    expect]# cat interact_expect
    #!/usr/bin/expect               
    #注意免交互ssh登陆的shebang是expect 而且结尾是interact表示需要交互式
    #这里的变量也是expect语法的设置风格
    set ip 10.0.0.9
    set user ubuntu
    set port 9527
    set password 123456
    set timeout 30
    spawn ssh -p $port $user@$ip
    expect {
    "yes/no" {send "yes\n";exp_continue}
    "password:" {send "$password\n"}
    }
    interact
    expect eof
    
    #或者非交互式登陆系统创建用户然后退出
    expect]# cat for_useradd_expect
    #!/usr/bin/bash
    USER=root
    PASSWD=123456
    NET=10.0.0
    port=22
    for id in {7..9};do
        ip=${NET}.$id
        expect <<-EOF
        set timeout 20
        spawn ssh -p $port $USER@$ip
        expect {
            "yes/no" {send "yes\n";exp_continue}
            "password" {send "$PASSWD\n"}
            }
        expect "#" {send "useradd hehe\n"}
        expect "#" { send "exit\n" }
        expect eof
    EOF
    done
    

    3、简述linux操作系统启动流程

    3、简述linux操作系统启动流程 
    1.硬件启动阶段,bios POST 
        power on self test 加电自检 检测cpu memory IO设备等是否正常 否则不予启动
        bios确定启动设备。从硬盘、网络、光盘、U盘启动
    2.grub启动阶段
    stage 1 bootloader,
    第一块硬盘的第一个扇区也就是MBR分区,执行前446字节的代码,将CPU交给446字节的代码运行也就是bootloader代码。引导启动操作系统,目的是找到第二阶段/boot下内核文件
    第一阶段MBR的boot loader只有一个功能,为了跳转到1.5阶段生成的bootloader上
    stage 1.5 
    第一阶段446字节的bootloader无法存放内核位置,/boot/grub/grub.config里面有内核位置,但是/boot的文件系统需要加载,即想办法识别/boot的文件系统 来读取config文件加载内核。MBRbootloader太小无法容下文件系统的驱动代码,而且文件系统的类型有很多种,比如ext2 xfs ext4 fat32等,MBRbootloader无法容下这么多种文件系统的驱动,所以,只能提供一个中间的过度bootloader即stage1_5 bootloader
    grub-install 时候,会将/boot/grub所在文件系统类型对应的stage1_5硬编码到MBR扇区后第一个分区前15个扇区中,因此这段空间位于MBR分区后,第一个分区之前。
    stage 2 
    是最终的bootloader,它读取grub的配置文件 根据配置文件内容向用户提供可引导操作系统菜单,并根据用户的选择从/boot下找到对应的内核映像传递内核初始化参数,执行完stage2后 进入内核阶段,CPU交给内核
    3.内核启动阶段
    调用虚拟根文件系统initramfs中的init
    加载驱动模块,初始化系统中各设备并做相关配置,包括cpu io 存储设备
    加载并切换真正的根文件系统(grub.conf中root=指定)
    协助内核呼叫/sbin/init程序 这个也可以在grub.conf中指定
    4.系统初始化阶段
    /etc/inittab运行级别
    系统初始化脚本功能/etc/rc.d/rc.sysinit
    (1) 设置主机名
    (2) 设置欢迎信息
    (3) 激活dev和selinux 
    (4) 挂载/etc/fstab文件中定义的文件系统
    (5) 检测根文件系统,并以读写方式重新挂载根文件系统
    (6) 设置系统时钟
    (7) 激活swap设备
    (8) 根据/etc/sysctl.conf文件设置内核参数
    (9) 激活lvm及software raid设备
    (10)加载额外设备的驱动程序
    (11)清理操作
    /etc/rc.d/rc
    加载系统服务:定义/etc/rcN.d/下所有文件 其实是/etc/init.d/下脚本文件的软链接
    S开头文件:要启动的服务(脚本),从01开始启动,数字越小越优先启动
    K开头的文件:要停止的服务(脚本),从01开始关闭,数字越小越优先关闭
    用户自定义服务:/etc/rcN.d/下rc.local文件
    
    centos6启动流程.png

    4、破解centos7 密码。

    grub菜单 e编辑
    将光标移动linux 开始的行,添加内核参数rd.break
    按ctrl-x启动
    mount –o remount,rw /sysroot
    chroot /sysroot
    passwd root
    
    centos7破解root密码1.png 破解centos7密码2.png 破解centos7密码3.png

    相关文章

      网友评论

          本文标题:第八周 第九周作业

          本文链接:https://www.haomeiwen.com/subject/garvgktx.html