Docker build 的几种方式

build 的帮助文件中我们可以看到,docker build 不仅能支持本地 Dcokerfile 的构建,还可以从 URL 以及标准输入(-)中读取信息进行构建,下面就来说说 docker build 的几种构建方式。

[hzz@ TEST]$ docker build --help

Usage:  docker build [OPTIONS] PATH | URL | -

Build an image from a Dockerfile

Continue reading “Docker build 的几种方式”

Docker build 的几种方式

magedu pro 第七周作业

1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;

脚本内容如下:

#!/usr/bin/env 

loginshell=$( /etc/|cut -d: -f7);

loginct=0;
nologinct=0;

for i in $loginshell;do
  if [[ "$i" == "/sbin/nologin" ]]; then
    let nologinct+=1;
  else
    let loginct+=1;
  fi
done

 "可登录的用户数为:$loginct";
 "不可登录的用户数为:$nologinct";

执行结果如下:

[hzz@ ~]$ bash test.sh 
可登录的用户数为:5
不可登录的用户数为:20
[hzz@ ~]$

Continue reading “magedu pro 第七周作业”

magedu pro 第七周作业

Bash 远程拷贝文件的函数

需安装 才能正常使用。

 install -y expect;
#!/usr/bin/env 
#远程拷贝文件
set -e;

#拷贝远程文件到本地
EXPECT_CP_R(){
  local EXUSR=${1}
  local EXHOST=${2}
  local EXPWD=${3}
  local R_FILE=${4}
  local L_FILE=${5}

  expect -c "
    set timeout 300
    spawn scp -qr ${EXUSR}@${EXHOST}:${R_FILE} ${L_FILE}
    expect {
      \"not known\" {send_user \"[exec  -e Erro:Host not known\n];exit\"}
      \"Connection refused\" {send_user \"[exec  -e Erro:Connection refused\n];exit\"}
      \"(yes/no)?\" {send \"yes\r\";exp_continue}
      \"password:\" {send \"${EXPWD}\r\";exp_continue}
      \"Permission denied\" {send_user \"[exec  -e Erro:Wrong \n];exit\"}
      \"]*\" {send \"\r\"}
      \">*\" {send \"\r\"}
    }
  "
}

#拷贝本地文件到远程
EXPECT_CP_L(){
  local EXUSR=${1}
  local EXHOST=${2}
  local EXPWD=${3}
  local L_FILE=${4}
  local R_FILE=${5}

  expect -c "
    set timeout 300
    spawn scp -qr ${L_FILE} ${EXUSR}@${EXHOST}:${R_FILE}
    expect {
      \"not known\" {send_user \"[exec echo -e Erro:Host not known\n];exit\"}
      \"Connection refused\" {send_user \"[exec echo -e Erro:Connection refused\n];exit\"}
      \"(yes/no)?\" {send \"yes\r\";exp_continue}
      \"password:\" {send \"${EXPWD}\r\";exp_continue}
      \"Permission denied\" {send_user \"[exec echo -e Erro:Wrong \n];exit\"}
      \"]*\" {send \"\r\"}
      \">*\" {send \"\r\"}
    }
  "
}
Bash 远程拷贝文件的函数

Bash 远程执行命令的函数

需安装 才能正常使用。

 install -y expect;
#!/usr/bin/env 
#远程执行命令
set -e;

EXPECT_SH(){
  local EXUSR=${1}
  local EXHOST=${2}
  local EXPWD=${3}
  local EXCMD=${4}
  expect -c "
    set timeout 300
    spawn ssh ${EXUSR}@${EXHOST}
    expect {
      \"not known\" {send_user \"[exec  -e Erro:Host not known\n];exit\"}
      \"Connection refused\" {send_user \"[exec  -e Erro:Connection refused\n];exit\"}
      \"(yes/no)?\" {send \"yes\r\";exp_continue}
      \"password:\" {send \"${EXPWD}\r\";exp_continue}
      \"Permission denied\" {send_user \"[exec  -e Erro:Wrong \n];exit\"}
      \"]*\" {send \"\r\"}
      \">*\" {send \"\r\"}
    }
    send \"${EXCMD}\rexit\r\"
    expect eof
  "
}
Bash 远程执行命令的函数

Expect 远程执行检查函数

需安装 才能正常使用。

 install -y expect;
#!/usr/bin/env 
#expect 功能检查
set -e;

EXPECT_CHECK(){
  local EXUSR=${1}
  local EXHOST=${2}
  local EXPWD=${3}
  #ssh test
  EXP_RST=`
    expect -c "
      set timeout 300
      spawn ssh ${EXUSR}@${EXHOST} \" PASS\"
      expect {
        \"not known\" {send_user \"[exec  -e Erro:Host not known\n];exit\"}
        \"Connection refused\" {send_user \"[exec  -e Erro:Connection refused\n];exit\"}
        \"(yes/no)?\" {send \"yes\r\";exp_continue}
          \"password:\" {send \"${EXPWD}\r\";exp_continue}
        \"Permission denied\" {send_user \"[exec  -e Erro:Wrong \n];exit\"}
      }
    "| -E 'PASS|Erro'| -v echo| 's/\r//g;s/\n//g'
  `
  if [[ ${EXP_RST} && ${EXP_RST} == PASS ]]; then
    echo -e "\nEXPECT CHECK COMPLETE!\n";
    return 0;
  else
    echo -e "\n${EXUSR}@${EXHOST} EXPECT CHECK ERROR!\n";
    echo -e "\n${EXP_RST}\n";
    return 1;
  fi
}
Expect 远程执行检查函数

Linux 使用 autojump 直达目录

介绍这款神器之前,先来确认一个问题。在 的使用过程中,如何快速地到达指定目录?

很多人肯定会说,使用 tab 补全大法啊,笨!

嗯,没错,在没认识到 之前,我也是这么想的,但熟悉使用过这款神器后,才明白什么叫所达即所想。也就是无需考虑中间还有多少层目录,你只需要记住最终目录的名称,就可以快速进入该目录……

Continue reading “Linux 使用 autojump 直达目录”

Linux 使用 autojump 直达目录

Bash 编程之函数

简介

把一段独立功能的代码当作一个整体,并为之一个名字;命名的代码段,此即为函数。函数存在的意义,就是为了可以更加方便地进行代码重用。

函数不会自动执行,只有在代码中调用函数名称,才会在调用位置执行函数所包含的代码段。

编程的函数有两种语法:

# 语法一:
  f_name  {
    ...函数体...
}

# 语法二:
f_name()  {
    ...函数体...
}

Continue reading “Bash 编程之函数”

Bash 编程之函数

magedu pro 第六周作业

1、请详细描述 系统的启动流程(详细到每个过程系统做了哪些事情)。

由于篇幅过长,已单独写成一篇博客,详见:《CentOS 系统启动流程

2、为运行于虚拟机上的 CentOS 6 添加一块新硬件,提供两个主分区。

  • (1)为硬盘新建两个主分区;并为其安装
  • (2)为硬盘的第一个主分区提供内核和 ramdisk 文件;为第二个分区提供 rootfs 。
  • (3)为 rootfs 提供 、 ls 、 程序及所依赖的库文件。
  • (4)为 grub 提供配置文件。
  • (5)将新的硬盘设置为第一启动项并能够正常启动目标主机。

Continue reading “magedu pro 第六周作业”

magedu pro 第六周作业