怎样截取Swarm集群令牌?shell命令输出的信息,截取其中一段,作为字符串变量
2017-06-17 22:54
756 查看
问题:
在创建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
截图:
后记:
#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 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
截图:
后记:
#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
相关文章推荐
- shell命令:以空格为分隔符截取文件每行的第一个字符串,并用sort排序,再去掉相同的字符串,将结果输出到另一个文件
- python中使用shell命令的输出作为其变量的方法
- 怎样将shell命令的输出信息同时显示在屏幕和保存到日志文件中
- shell脚本变量和字符串截取
- shell截取一段字符串
- linux下的shell命令的编写,以及java怎样调用linux的shell命令(java怎样获取linux上的网卡的ip信息)
- shell ,sed命令用变量替换字符串,单引号改为双引号
- shell 截取变量的字符串
- shell脚本变量和字符串截取
- shell的字符串和数字的转化(数字自动做字符串处理,变量名做字符串输出用单引号)
- linux下的shell命令的编写,以及java怎样调用linux的shell命令(java怎样获取linux上的网卡的ip信息)
- shell脚本变量和字符串截取
- C语言:从键盘输入一个字符串,以感叹号!作为结束标志,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。
- shell截取变量的字符串
- C 输入一个字符串,将其中连续的数字作为一个整数存到一数组中,统计整数个数并输出这些整数
- 单引号内引入变量 shell 命令输出赋值给变量,以及用变量替换命令
- 用shell编写的简单密码加密程序,涉及到ASCII与字符的相互转换,以及命令结果输出到变量
- 输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一数组a中。统计共有多少个整数,并输出这些数。
- 编写程序,测试字符串“你好,欢迎来到Java世界”的长度,将字符串的长度转换成字符串进行输出,并对其中的“Java”四个字母进行截取,输出截取字母以及它在字符串中的位置。
- shell 截取变量的字符串(转)