1、用shell脚本实现自动登录机器

#!/usr/bin/expect
set ip 192.168.2.192
set user root
set password root
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_cotinue}
"password" {send "$password\n"}
}
interact

2、shell 判断一个值bone是否在数组arrayZ=( one two three four five five )中
#!/bin/bash
var=( "one" "two" "three" "four" "five" "five" )
for i in seq $[${#var[*]}-1];do
echo ${var[$i]}
if [ ${var[$i]} == bond ];then
echo yes
else
echo no
fi
done
unset var

3、用命令或者脚本实现 0057AF051EFF 变为 00:57:AF:05:1E:FF

a=0057AF051EFF
echo ${a:0:2}:${a:2:2}:${a:4:2}:${a:6:2}:${a:8:2}:${a:10:2}

4、a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0 ! \@ # \$ \% \^ \& * ( ) - _ \= + \ \/ \' \" \; \: [ ] { } \, . \?
用以上字符,结合数组,实现一个随机生成20位密码的脚本

#!/bin/bash
declare -a a
a=(a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0 ! \@ # \$ \% \^ \& * ( ) - _ \= + \ \/ \' \" \; \: [ ] { } \, . \?)
for i in seq 0 19;do
let i=$[$RANDOM%${#a[*]}]
echo -e "${a[$i]:0:20}\c"
done

5、详细叙述centos7开机流程
第一步:POST加电自检
主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主要代表为CMOS)芯片上的BIOS(Basic Input/Output System)程序;例如BIOS会检测CPU、Memory以及I/O设备是否能够正常运行,如果是个人计算机的话可能还会检测一下显示器。只要一通电,CPU就会自动去加载ROM芯片上的BIOS程序,是这样来实现的。而检测完成之后就进行硬件设备的初始化
第二步:Boot Sequence(选择启动设备以加载MBR)
主要实现的功能是选择要启动的硬件设备,选择了之后就可以读取这个设备上位于MBR里头的bootloader了。这一步的实现是这样的:根据BIOS中对启动顺序的设定,BIOS自己会依次扫描各个引导设备,然后第一个被扫描到具有引导程序(bootloader)的设备就被作为要启动的引导设备。
第三步:加载bootloader(MBR)
这一步实现起来的步骤比较多,前面的BIOS通过读取并执行启动设备的MBR中的bootloader,而bootloader要实现的功能就是提供一个菜单给用户,让用户去选择要启动的系统或不同的内核版本,然后把用户选择的内核版本加载至RAM中的特定空间,接着在RAM中解压、展开,而后把系统控制权移交给内核。
第四步:Kernel自身初始化
Kerenl在得到系统控制权之后,首先要进行自身初始化,而初始化的主要作用是:
(1)探测可识别到的所有硬件设备
(2)加载硬件驱动程序,即加载真正的根文件系统所在设备的驱动程序
(3)以只读方式挂载根文件系统(4)运行用户空间的第一个应用程序:/sbin/init.
(4)运行用户空间的第一个应用程序:/sbin/init.
第五步:init管理用户空间服务进程
这一步的流程是:/sbin/init --> 根据init配置文件设置默认运行级别 --> 运行系统初始化脚本/etc/rc.d/rc.sysinit,完成系统初始化 --> 关闭或启动用户选定的默认运行级别所对应的服务 --> 启动终端,打印登录提示符
根据init配置文件设置默认运行级别
对于CentOS 5来说,初始化程序init是SysV init,其配置文件为:/etc/inittab;
对于CentOS 6来说,初始化程序init是upstart,其配置文件为:/etc/inittab, /etc/init/.conf,也就是upstart将配置文件拆分成多个,在/etc/init/目录下以conf结尾的都是upstart风格的配置文件,而/etc/inittab仅用于设置默认运行级别;
对于CentOS 7来说,初始化程序init是systemd,其配置文件为:/usr/lib/system/systemd/
, /etc/systemd/system/*;

6、编写Nginx的systemd配置文件, 实现nginx进程开机启动
首先安装 yum install -y gcc-c++ && pcre && pcre-devel && zlib && zlib-devel && openssl && openssl-devel

然后./configure && make && make install
cd /lib/systemd/system/
vim nginx.service
systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
systemctl start nginx.service
systemctl status nginx.service