1.      编写脚本,接受二个位置参数,magedu/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www

#!/bin/bash

 

[ $# -lt 2 ] && { echo USG: $0 username home_dir; exit 1;   }

 

USER=`grep -E "^$1" /etc/passwd`

 

if [ -z "${USER}" ];then

         useradd -d $2 $1

         if [ $? -eq 0   ];then

                   echo $1   created

         fi

fi


2.      使用expect实现自动登录系统。

expect

语法:

         expect [选项] [-c cmds ] [[-[f|b]] cmdfile ] [args]

选项:

-c :  从命令行执行expect脚本,默认expect是交互地执行的

示例: expect -c 'expect "\n" {send "pressed enter\n"}'

-d:  可以输出调式信息

示例: expect -d ssh.exp

命令:

         spawn: 启动新的进程

         send: 用于向进程发送字符串

         expect: 从进程接收字符串

         interact: 允许用户交互

         exp_continue: 匹配多个字符串在执行动作后加此命令

         set: 进行赋值

示例:

         set ip 192.168.1.2     à ip 赋值为192.168.1.2

         set user root         à user赋值为root

         set timeout 10       à 设置timeout时间

         set ip [lindex $argv 0]  à 位置参数,0 表示第一个参数

         set user [lindex $argv 1]  à 位置参数,1 表示第二个参数

         set password [lindex $argv 2] à 位置参数,2 表示第三个参数

实现自动登录脚本如下:

#!/usr/bin/expect

 

set ip [lindex $argv 0]

set user [lindex $argv 1]

set password [lindex $argv 2]

 

spawn ssh $user@$ip

expect {

    "yes/no" {   send "y\n";exp_continue }

    "password" {   send "$password\n" }

}

interact

 

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

    CentOS6启动流程

1. POST:通电自检 

2.   BIOS:BOIS自检,加载硬盘 

3.   读取MBR,进行MBR引导  

4.   bootloader:grub引导菜单 

5.   加载内核 Kernelramdisk)   

6.   启动init进程,依据inittab文件设定运行级别 inittab用于定义默认运行级别)

7.   init进程,执行rc.sysinit文件   

8.   分别执行/etc/init/rcS.conf/etc/init/rc.conf/etc/init/start-ttys.confl来调用命令执行/etc/rc#.d/文件

    里面定义的是各种服务的启动脚本,可以ls查看,S开头代表开机启动的服务,K开头的是关机要执行的任务。#代表数字,一个数字代表一个运行级别,共7个运行级别

9.   执行/etc/rc.d/rc.local   

10.   执行/bin/login程序,等待用户登录


    CentOS7 启动流程   

1.POST:通电自检 

2.BIOS:BOIS自检,加载硬盘 

3.读取MBR,进行MBR引导 

4.bootloader:grub引导菜单 

5.加载内核和inintamfs模块  

6.内核开始初始化,使用systemd来代替centos6以前的init程序

7.执行initrd.target,包括挂载/etc/fstab文件中的系统,此时挂载后,就可以切换到根目录了

8.initramfs根文件系统切换到磁盘根目录

        Centos7表面是有“运行级别”这个概念,实际上是为了兼容以前的系统,每个所谓的“运行级别”都有对应的软连接指向,默认的启动级别是/etc/systemd/system/default.target,根据它的指向可以找到系统要进入哪个模式

        模式:

        0 ==> runlevel0.target, poweroff.target

        1 ==> runlevel1.target,   rescue.target

        2 ==> runlevel2.target,   multi-user.target

        3 ==> runlevel3.target,   multi-user.target

        4 ==> runlevel4.target,   multi-user.target

        5 ==> runlevel5.target,   graphical.target

        6 ==> runlevel6.target,   reboot.target

9.systemd执行sysinit.target

10.systemd启动multi-user.target下的本机与服务器服务

11.systemd执行multi-user.target下的/etc/rc.d/rc.local

12.Systemd执行multi-user.target下的getty.target及登录服务

        getty.target是启动终端的systemd对象。如果到此步骤,系统没有被指定启动图形桌面,到此就可以结束了,如果要启动图形界面,需要在此基础上启动桌面程序

13.systemd执行graphical需要的服务

 

4、破解centos7 密码。

破解的方法有好几种,这里我介绍两种:

开机进入到启动界面时按e,进入到编辑界面

第十周_第1张图片

进入到编辑界面后有两种方法可以来破解root密码;

方法一:

1.       找到linux16 /VMlinuz……. 这一行,如下图;并在这一行最后输入init=/bin/bash

2.       “Ctrl+x”进行重启

第十周_第2张图片

3.       进入到bash界面后依此输入如下命令

mount -o remount,rw /  #挂载”/”分区,使其有可写权限

touch / .autorelabel    #因为受到SELinux的影响,需要执行此命令才能使密码修改生效

passwd                                  #通过此命令修改root密码

exec /sbin/init                    #修改成功以后执行此命令重启

4.       重启完成以后输入新的root密码即可

第十周_第3张图片

方法二:

1.       找到如下图行,在这行最后输入”rd.break console=tty0”

2.       ”Ctrl+X”重启

第十周_第4张图片

3.       进入到救援模式以后一次输入如下命令

mount -o remount,rw /sysroot

chroot /sysroot

touch / .autorelabel

passwd

exit

exit

4.       exit执行完以后系统会自动重启,重启完成以后输入新的root密码即可

第十周_第5张图片