怎样截取Swarm集群令牌?shell命令输出的信息,截取其中一段,作为字符串变量

问题:

在创建Docker Swarm集群的过程中,执行完docker swarm init 命令以后,集群就已经创建好了,可以通过 docker swarm join-token manager 命令和docker swarm join-token worker命令,分别显示管理节点和工作节点加入到集群的命令,其中有令牌的信息。

一般通过手工复制提示信息中的整个命令,也能顺利的将其余的管理节点和工作节点加入到 Swarm 集群中。但如果能够通过shell编程,截取命令输出信息中的固定长度的令牌信息,就可以实现Docker Swarm集群创建过程的自动化,截取令牌,非常有用。

 

解决:

1、将命令输出通过grep token过滤,得到一行字符串,其中包含令牌;

2、从字符串变量中截取第x到第y位置的字符串,这就是令牌字符串;

 

# 原始输出:

$ docker swarm join-token manager

To add a manager to this swarm, run the following command:

    docker swarm join \

    --token SWMTKN-1-18foycvyym1btrks0xshjoh2a51kg1wkf90qlnd601op1owj9e-477vghk0

mw93l7nklgt9mehgv \

    192.168.99.118:2377

 

$ docker swarm join-token worker

To add a worker to this swarm, run the following command:

    docker swarm join \

    --token SWMTKN-1-18foycvyym1btrks0xshjoh2a51kg1wkf90qlnd601op1owj9e-blqzz5y4

8jbd61j0ywzbgvkp9 \

    192.168.99.118:2377

 

# 使用grep token 过滤后的输出

$ docker swarm join-token manager|grep token

    --token SWMTKN-1-18foycvyym1btrks0xshjoh2a51kg1wkf90qlnd601op1owj9e-477vghk0

mw93l7nklgt9mehgv \

 

$ docker swarm join-token worker|grep token

    --token SWMTKN-1-18foycvyym1btrks0xshjoh2a51kg1wkf90qlnd601op1owj9e-blqzz5y4

8jbd61j0ywzbgvkp9 \

  

代码:

#切换到主控节点manager1

eval $(docker-machine env manager1)

 

#显示管理节点加入集群的信息,截取其中的令牌作为变量

#T1是上面管理节点加入集群的整个字符串,

#包含前面4个无用的空格和--token及空格8个字符,一共12个字符,

#${T1:12:85},截取T1字符串,从第12个到85个,刚好是令牌。

T1=`docker swarm join-token manager|grep token`

TM=${T1:12:85}

Echo 管理节点令牌: $TM

 

#显示工作节点加入集群的信息,截取其中的令牌作为变量

#T2是工作节点的

T2=`docker swarm join-token worker|grep token`

TW=${T2:12:85}

Echo 工作节点令牌: $TW

 

#TM字符串变量是管理节点加入的令牌

#TW字符串变量是工作节点加入的令牌

#便于后面编程使用

 

命令:

eval $(docker-machine env manager1)

T1=`docker swarm join-token manager|grep token`

TM=${T1:12:85}

Echo 管理节点令牌: $TM

T2=`docker swarm join-token worker|grep token`

TW=${T2:12:85}

Echo 工作节点令牌: $TW


截图:

怎样截取Swarm集群令牌?shell命令输出的信息,截取其中一段,作为字符串变量_第1张图片


后记:

#1、既然已经得到 T1=`docker swarm join-token manager|grep token`这个变量,是否可以直接利用T1这个变量到 集群的创建命令中?有待验证。

#T1 的值是“    --token SWMTKN-1-18foycvyym1btrks0xshjoh2a51kg1wkf90qlnd601op1owj9e-477vghk0mw93l7nklgt9mehgv \


# 2、字符串截取操作的例子

$var1=cowabunga
$echo ${var:0:3}
cow
$echo ${var1:3:7}
abunga


你可能感兴趣的:(Docker管理,Docker入门,Docker集群,软件编程)