#!/bin/bash
if [ $# -ne 2 ]; then
echo "You must input two args"
exit
fi
id magedu &> /dev/null
if [ $? -ne 0 ]; then
useradd -d $2 $1
echo "Create user $1 successful,his home directory is $2"
else
echo "User $1 has been exist"
fi
2、使用expect实现自动登录系统
脚本login.exp如下
#/usr/bin/expect
set ip "192.168.0.12"
set user "root"
set password "oplk1234"
set timeout 30
spawn ssh $user@$ip
expect {
"yes/no" {exp_send "yes\n"; exp_continue}
"*password*" {send "$password\n"}
}
interact
执行脚本
expect login.exp
3、简述linux操作系统启动流程
根据init程序的不同,Linux不同发行版的启动流程存在一些不同之处
CentoS6系统的init程序是Upstart,启动流程如下:
- 开机后加载BIOS的硬件信息,获取第一个启动设备
- 读取第一个启动设备MBR的引导加载程序(grub)的启动信息
- 加载内核,解压缩vmlinuz文件,并尝试驱动所有的硬件设备
- 内核执行init程序Upstart,进入默认的运行级别
- init程序执行/etc/rc.d/rc.sysinit文件,以可读写的方式重新挂载根文件系统
- 加载内核的外部模块
- init启动设置为开启启动的服务
- init执行/etc/rc.d/rc.local文件里的命令
- 执行/bin/login程序,等待用户登录
- 用户登录系统之后开始以Shell控制主机
CentOS7及之后的CentOS8系统的init程序是systemd,启动流程和CentOS6不一样
- 进行UEFI或BIOS初始化,运行POST开机自检
- 选择启动设备
- 引导装载程序grub2加载装载程序的配置文件
- 加载initramfs驱动模块
- 加载内核选项
- 内核初始化,centos7使用systemd代替Upstart
- 执行initrd.target所有单元,包括挂载/etc/fstab
- 从initramfs根文件系统切换到磁盘根目录
- systemd执行默认target配置,配置文件/etc/systemd/system/default.target
- systemd执行sysinit.target初始化系统及basic.target准备操作系统
- systemd启动multi-user.target下的本机与服务器服务
- systemd执行multi-user.target下的/etc/rc.d/rc.local
- Systemd执行multi-user.target下的getty.target及登录服务
- 如果系统被设置为开机进入图形界面,systemd还要启动graphical.target需要的服务
4、破解centos7 密码
方法一
1、开机后在选择内核的界面按任意键打断倒计时
2、按e键进入编辑模式
3、将光标移动到linux开头的行,在这一行的末尾添加参数rd.break
4、按Ctrl + X启动系统
5、执行`mount -o remout,rw /sysroot`命令,重新挂载系统
6、执行`chroot /sysroot`命令,切换根路径为系统的根目录
7、执行`passwd root`命令,修改root密码
8、CentOS7系统默认启用了Selinux功能。如果没有禁用Selinux,需要额外执行`touch /.autorelabel`命令
9、执行`exit`命令,退出登录
10、执行`reboot`命令,重启系统
方法二
1、开机后在选择内核的界面按任意键打断倒计时
2、按e键进入编辑模式
3、将光标移动到linux开头的行,在这一行里的“ro”修改为“rw init=/sysroot/bin/sh”
4、按Ctrl + X启动系统
6、执行`chroot /sysroot`命令,切换根路径为系统的根目录
7、执行`passwd root`命令,修改root密码
8、如果没有禁用Selinux,需要额外执行`touch /.autorelabel`命令
9、执行`exit`命令,退出登录
10、执行`reboot`命令,重启系统