第八周 第九周作业
2020-12-16 本文已影响0人
念念OPS
第八周
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