Linux脚本实践

1、编写脚本,接受两个位置参数,magedu和/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www
#!/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,启动流程如下:

  1. 开机后加载BIOS的硬件信息,获取第一个启动设备
  2. 读取第一个启动设备MBR的引导加载程序(grub)的启动信息
  3. 加载内核,解压缩vmlinuz文件,并尝试驱动所有的硬件设备
  4. 内核执行init程序Upstart,进入默认的运行级别
  5. init程序执行/etc/rc.d/rc.sysinit文件,以可读写的方式重新挂载根文件系统
  6. 加载内核的外部模块
  7. init启动设置为开启启动的服务
  8. init执行/etc/rc.d/rc.local文件里的命令
  9. 执行/bin/login程序,等待用户登录
  10. 用户登录系统之后开始以Shell控制主机

CentOS7及之后的CentOS8系统的init程序是systemd,启动流程和CentOS6不一样

  1. 进行UEFI或BIOS初始化,运行POST开机自检
  2. 选择启动设备
  3. 引导装载程序grub2加载装载程序的配置文件
  4. 加载initramfs驱动模块
  5. 加载内核选项
  6. 内核初始化,centos7使用systemd代替Upstart
  7. 执行initrd.target所有单元,包括挂载/etc/fstab
  8. 从initramfs根文件系统切换到磁盘根目录
  9. systemd执行默认target配置,配置文件/etc/systemd/system/default.target
  10. systemd执行sysinit.target初始化系统及basic.target准备操作系统
  11. systemd启动multi-user.target下的本机与服务器服务
  12. systemd执行multi-user.target下的/etc/rc.d/rc.local
  13. Systemd执行multi-user.target下的getty.target及登录服务
  14. 如果系统被设置为开机进入图形界面,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`命令,重启系统

Linux脚本实践

上一篇:虚拟机VMware下CentOS6.6安装教程图文详解


下一篇:Linux用户和组管理以及文件权限