#!/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
腳本login.exp以下linux
#/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
執行腳本centos
expect login.exp
根據init程序的不一樣,Linux不一樣發行版的啓動流程存在一些不一樣之處
CentoS6系統的init程序是Upstart,啓動流程以下:bash
- 開機後加載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須要的服務
一、開機後在選擇內核的界面按任意鍵打斷倒計時 二、按e鍵進入編輯模式 三、將光標移動到linux開頭的行,在這一行的末尾添加參數rd.break 四、按Ctrl + X啓動系統 五、執行`mount -o remout,rw /sysroot`命令,從新掛載系統 六、執行`chroot /sysroot`命令,切換根路徑爲系統的根目錄 七、執行`passwd root`命令,修改root密碼 八、CentOS7系統默認啓用了Selinux功能。若是沒有禁用Selinux,須要額外執行`touch /.autorelabel`命令 九、執行`exit`命令,退出登陸 十、執行`reboot`命令,重啓系統
一、開機後在選擇內核的界面按任意鍵打斷倒計時 二、按e鍵進入編輯模式 三、將光標移動到linux開頭的行,在這一行裏的「ro」修改成「rw init=/sysroot/bin/sh」 四、按Ctrl + X啓動系統 六、執行`chroot /sysroot`命令,切換根路徑爲系統的根目錄 七、執行`passwd root`命令,修改root密碼 八、若是沒有禁用Selinux,須要額外執行`touch /.autorelabel`命令 九、執行`exit`命令,退出登陸 十、執行`reboot`命令,重啓系統