编写 Python 脚本自动化执行 docker 命令 exec

前言

之前一直在用 bash 脚本自动化,但是因为不熟悉语法,总感觉维护脚本的工作量比 python 大,这次重新写一个 Python 脚本来自动化执行 docker 下的命令。即对每个容器执行 exec 命令,我这里的应用是开启每个容器的 SSH 服务。

正文

直接贴代码,container 列表中的容器 id 是我人工 docker ps 添加的,其实这一步应该也能自动化,用字符串处理的方法提取容器 id 和对应容器名。但是又比较费工作量,加上之前已经有了容器 id 的清单了,所以这里就直接人工造表了(不够优雅)。

#! /usr/bin/python3
# -*- encoding: utf-8 -*-
'''
@File    :   server-docker-start-ssh-demo.py
@Time    :   2022/10/26 9:23:00
@Author  :   Haulyn5
@Version :   1.0
@Contact :   https://blog.csdn.net/Haulyn5?type=blog
'''
import subprocess  # 用于开启子进程,执行命令


container=[
"eddb", # 便于查询的备注,如张三;另外容器 id 可以只写前几位,如果足以区分其他容器
"f8bb"  # 便于查询的备注,如李四

]

for container_id in container:
    command = f'docker exec -it {container_id} bash -c "service ssh start"'  # docker 命令,在容器内执行 service ssh start
    output_str = subprocess.run(command, shell=True, capture_output=True)
    print(output_str)  # 这里其实好像不是 str,可以更优雅一点,只输出 output

具体要在每个容器内执行某个命令,把 service ssh start 命令换成需要的命令即可。

其实这里还可以用 python 的 docker 库,但是需要安装,我这里为了省工作量,就直接相当于用 shell 命令去执行了。输出大概如下图所示,可以看到比较杂乱,可以做一些处理只输出需要的内容,这里不做进一步深挖了。

附录

另外,测试的时候,发现 Python 3.6 会不兼容代码,升级到 3.8.10 后可以顺利执行,忘记当时的报错了。。

subprocess 库文档:

nullhttps://docs.python.org/zh-cn/3/library/subprocess.html

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值