第八周作业——第三种

第八周作业——第三种

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

#!/bin/bash
# ******************************************************
# Author       :suika_xiaoyuzhenren
# Last modified: 2020-01-06 14:07
# Email        : 2429366765@qq.com
# blog         : https://blog.csdn.net/suika_xiaoyuzhenren
# Filename     : 8-1.sh
# Description  : 
# ******************************************************

#自动登机(企业批量版)
#.....................*

#把要进行批量登录的ip地址写进临时文件中,用文件来控制


for i in `seq 1 $ips`;do            #有多少个ip就循环多少次
ip=`cat /data/tmp/ip.txt | sed -n ''''$i'''p'`    #定义变量,每次循环取第$i个ip
#这儿用expect来进行自动化交互操作
expect <<EOF
set timeout 10
spawn ssh root@$ip
expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "123.com\n";exp_continue }
}
expect "]#" { send "echo 'successful login!~~~~~'\n" }
exit
EOF
done
echo '已完成本次批量登机'

2shell 判断一个值bone是否在数组arrayZ=( one two three four five five )

#!/bin/bash
# ******************************************************
# Author       :suika_xiaoyuzhenren
# Last modified: 2020-01-07 11:16
# Email        : 2429366765@qq.com
# blog         : https://blog.csdn.net/suika_xiaoyuzhenren
# Filename     : 8-2.sh
# Description  : 
# ******************************************************

shuzhi=one          #固定数值
#read -p '移动数值测试,如果要看正确结果,您只能输入one/two/three/four/five;否则,就是假的结果' shuzhi
Error=0
declare -a arrayZ      #定义普通数组
arrayZ=("one" "two" "three" "four" "five" "five")   #给数组赋值

for i in `seq 0 "$((${#arrayZ[@]}-1))"`;do
#以数组下标进行循环,并赋值给i,固定值在每次循环都和当前循环数组的元素进行比较。
        if [ "${arrayZ[$i]}" = "$shuzhi" ];then
                echo "$shuzhi in the ${arrayZ[$i]}"
        else
#不符合Error变量每次自加1
                Error=$(($Error+1))
        fi
done
#如果Error大于等于当前数组的个数,则输出$shuzhi not in the arrayZ array
if [ "$Error" -ge "${#arrayZ[@]}" ];then
        echo "$shuzhi not in the arrayZ array"
fi

 

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

笨方法

echo 0057AF051EFF |sed -nr 's/(..)(..)(..)(..)(..)(..)/\1:\2:\3:\4:\5:\6/gp'

var="0057AF051EFF";echo "${var:0:2}:${var:2:2}:${var:4:2}:${var:6:2}:${var:8:2}:${var:10:2}"

省事儿的方法

#!/bin/bash
# ******************************************************
# Author       :suika_xiaoyuzhenren
# Last modified: 2020-01-07 15:59
# Email        : 2429366765@qq.com
# blog         : https://blog.csdn.net/suika_xiaoyuzhenren
# Filename     : 8-3.sh
# Description  : 
# ******************************************************

value1="0057AF051EFF"
length="${#value1}"
for ((i=0;i<"$length";i+=2));do
        if [ $i -eq 0 ]
        then
                var1="${value1:$i:2}"
        else
                var2="$var2:${value1:$i:2}"
        fi
done
echo "脚本最终执行结果为:$var1$var2"

 

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位密码的脚本

# Author       :suika_xiaoyuzhenren
# Last modified: 2020-02-03 20:49
# Email        : 2429366765@qq.com
# blog         : https://blog.csdn.net/suika_xiaoyuzhenren
# Filename     : 8-4.sh
#用以上字符,结合数组,实现一个随机生成20位密码的脚本
# ******************************************************

declare -a Passwd_var

Passwd_var=(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 \! \@ \# \$ \% \^ \& \* \( \) \- \_ \= \+ \\ \/ \' \" \; \: \[ \] \{ \} \, \. \?)
Passwd_length=20

for ((i=0;i<"$Passwd_length";i+=1));do
        Password="$Password${Passwd_var[$RANDOM%${#Passwd_var[@]}]}"
done

echo -e "您的新密码如下,请查收:\n$Password"
#echo $Passwd_var|tr -s ' ' '\n'

 

5、详细叙述centos7开机流程

  1. 主机电源通电(开机),初始化硬件,进行POST加电自检
  2. BIOS根据顺序选择启动设备
  3. 启动第一个硬盘设备的引导分区
    1. 执行存放在引导分区内的bootloader(grub2 1阶段)
    2. 加载/boot分区的临时文件系统,加载成功后再加载/boot分区中grub2阶段的驱动程序(grub2 1.5阶段)
    3. 读取grub2的配置文件/etc/grub.d/、/etc/defalut/grub、/boot/grub2/grub.cnf,加载内核至内存中,解压缩/boot目录下的ramfs(因为grub2目录下的grub.cnf文件里面指定了内核的版本和根文件系统的地址)(grub2 2阶段)
  4. 开始初始化内核
    1. 检测可识别的所有硬件设备
    2. 加载硬件设备的驱动程序、内核对象
    3. 开始以只读方式挂载真正的根文件系统
    4. 加载systemd,代替/sbin/init(/sbin/init是个软连接,链接向了systemd, 实际上是加载/usr/lib/systemd/systemd)
  5. systemd开始执行/etc/systemd/system/default.target,读取系统默认启动级别
  6. systemd开始依次加载/usr/lib/system/system目录下的initrd.target相关单元(具体如下)
    1. emergency.service(这是centos7系统的紧急救援模式)
    2. emergency.target
    3. sysinit.target
    4. basic.targer
  7. systemd开始加载/etc/fstab文件
  8. systemd继续加载剩下的/usr/lib/system/system目录下*.target单元
    1. rescue.service(这是centos7系统的救援模式)
    2. rescue.target
  9. systemd加载multi-user.target文件(3模式),并行启动该模式下的服务和/etc/rc.d/rc.local(rc.local在centos7中不建议使用,只是过度旧版本才存在的)

    (感觉在centos7中,要想加载桌面,得先加载命令行模式下的服务,这和centos6又不相同)

  10.  systemd执行multi-user.target下的getty.target及登录服务
  11.  systemd最后在执行graphical.target(我认为:没有安装图形化桌面是不会启动的)
  12. 用户登录系统,开始以shell控制主机

6、编写Nginxsystemd配置文件, 实现nginx进程开机启动

nginx.service配置文件

[Unit]
Description=The Test Nginx web server
After=network.target
Conflicts=httpd.service

[Service]
Type=forking
ExecStart=/bin/nginx
ExecStop=/bin/nginx -s stop


[Install]
WantedBy=multi-user.target

执行结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值