题1
编写脚本,接受两个参数,进行用户创建
[root@use04 ~]# cat user_add.sh
#!/bin/bash
if [ $# -nt 2 -o "$1" != "magedu" -o "$2" != '/www' ];then
echo "Usage: useradd.sh magedu /www"
exit 2
else
id $1 &> /dev/null && echo "$1 exists" || ( useradd -d $2 $1 && echo "$1 create succesful" )
fi
题2
在脚本中使用expect命令实现ssh密钥的自动下发
准备需远程登录的地址
[root@use08 ~]# cat > /tmp/hosts.txt << EOF
> 192.168.247.15
> 192.168.247.16
> 192.168.247.17
> EOF
准备脚本
[root@use08 ~]# cat ssh_key.sh
#!/bin/bash
#1.password
password=mage
#2.keys
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa &> /dev/null
#3.install expect
rpm -q expect &> /dev/null || yum install expect -y &> /dev/null
#4.send key
while read ip;do
expect << EOF
set timeout 20
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
expect eof
EOF
done < /tmp/hosts.txt
题3
简单总结centos系统的启动流程
这里以centos7为例说明:
1、设备加电自检;
2、依照bios的启动顺序依次启动设备,会对安装有bootloader设备进行启动;
3、bootloader启动后,将kernal与ramdisk加载到内存当中;
4、ramdisk帮助kernal识别硬盘、构建文件系统;
5、kernal以只读方式挂根,并掌控设备后会启动第一个用户空间程序systemd,之后的系统启动工作将由systemd完成。
补充
bootloader
1、以MBR为例,作为常用的硬盘分区模式中的MBR模式,MBR引导分区大小为512byte;前446byte是bootloader,64byte是分区表,一个分区是16byte,2byte为魔术字,表明bootloader是否可用;
2、bootloader有多种类型,其中centos7用的bootloader,称为grub;
3、grub在启动过程中分为3个阶段,分别是:
1阶段,在MBR中进行;
1.5阶段,紧邻MBR的分区中进行,主要加载2阶段识别文件系统的驱动,1.5阶段是安装系统时生成;
2阶段,在硬盘的其他区中进行,突破MBR大小的限制,可以加载更多启动过程中必要文件;
ramdisk
与内核一起,被bootloader加载的内存当中,代替内核先接管系统,主要是帮助内核识别硬盘,构建根文件系统;添加ramdisk的目的是为了简化内核,保证内核简单高效;
kernal只读挂根
为防止内核存在bug导致误删除文件,所以在启动时内核第一次会以只读方式挂根文件系统,待系统用户空间程序启动完毕,会重新以读写方式挂根;
题4
centos破解密码方法,可通过进入救援模式,挂根进行root密码重置
进入救援模式,在开机界面上选定内核版本按e
找到linux16在最后加入rd.break
按ctrl+x进行救援模式
挂根
切根
root密码重置
退出后重启
进入登录界面后用root的新密码登录。