Shell脚本
Reference
Shell笔记
shell自动清理30天以上的文件
shell自动备份PVE里的虚拟机系统文件
chatgpt做的自动备份pve镜像
shell 定时备份文件夹脚本以及删除过期备份
写一个断电按顺序自动关闭服务器的脚本
GPT:自动停止服务,控制关机
GPT: Shell 停止Docker 应用
GPT: Shell从文档读取配置信息
Shell传参给脚本,带参数运行
GPT:Shell停止Systemd服务
停止Moosefs服务
StartMoosefs.sh
StopMoosefs.sh
StopDocker.sh
StopSysyemService.sh
备份脚本
Linux运维常用脚本总结
网卡绑定bond配置脚本
自动取文件脚本
shell脚本: 同步两个本地文件夹
分割mysql-slow慢日志的脚本
解压不成功退出整个解压
Linux操作 :批量截取文件第一列,去重
文本的一些操作
nginx监控脚本
监控tomcat脚本
kafka监控脚本
zookeeper监控启动脚本
本文档使用 MrDoc 发布
-
+
首页
GPT: Shell 停止Docker 应用
以下是一个简单的 Shell 脚本,它使用 docker ps 命令获取当前正在运行的 Docker 容器,然后使用 docker stop 命令逐一停止这些容器: ``` #!/bin/bash # 获取正在运行的 Docker 容器 ID 和名称,并逐一停止它们 docker ps | awk '{if(NR>1) print $1,$NF}' | while read id name do echo "Stopping container $name ($id)" docker stop $id done ``` 该脚本首先使用 docker ps 命令获取正在运行的 Docker 容器的 ID 和名称。其中,awk '{if(NR>1) print $1,$NF}' 用于去掉第一行输出(表头),然后输出每个容器的 ID 和名称,多个值由空格隔开。while read id name 用于循环读取每行输出中的 ID 和名称。 接下来,使用 docker stop 命令逐一停止每个容器。在停止容器之前,脚本会输出容器的名称和 ID。 要运行此脚本,只需将其保存为文件,并给予执行权限。例如,在 Linux 终端中输入以下命令: ``` $ vi stop-containers.sh # 打开编辑器并新建文件 $ chmod +x stop-containers.sh # 添加执行权限 $ ./stop-containers.sh # 运行脚本 ``` 以下是一个使用 SSH 连接到远程机器并停止其上运行的 Docker 容器的 Shell 脚本示例: ```bash #!/bin/bash # 定义远程主机相关参数 remote_host_ip="B_machine_IP" remote_host_username="your_username" remote_host_password="your_password" # 通过 SSH 连接到远程主机并执行命令 execute_remote_command() { sshpass -p "$remote_host_password" ssh -o StrictHostKeyChecking=no -q "$remote_host_username@$remote_host_ip" "$1" 或者:用免密登录的方式: ssh -o StrictHostKeyChecking=no "$remote_host_username@$remote_host_ip" "$1" } # 获取正在运行的 Docker 容器 ID 和名称,并逐一停止它们 docker_containers=$(execute_remote_command "docker ps -q") for container_id in $docker_containers; do container_name=$(execute_remote_command "docker inspect --format '{{.Name}}' $container_id | tr -d /") echo "Stopping container $container_name ($container_id)" execute_remote_command "docker stop $container_id" done ``` 此脚本首先定义了远程主机的 IP 地址、SSH 用户名和密码。然后,使用 sshpass 命令连接到远程主机,并在其中执行 docker ps -q 命令来获取正在运行的 Docker 容器的 ID 列表。 接下来使用 for ... do ... done 循环逐一停止每个容器。在停止容器之前,该脚本还使用 docker inspect 命令获取了容器的名称(去掉开头的斜杠字符)。最后,脚本输出容器的名称和 ID,并使用 SSH 连接到远程主机执行 docker stop 命令。 为了运行此脚本,您需要在其中修改远程主机的 IP 地址、用户名和密码,并将其保存为文件。然后,请设置该文件的权限并从本地主机运行此脚本。例如: ``` $ chmod u+x stop-docker-containers.sh $ ./stop-docker-containers.sh ``` 请注意,在执行此脚本之前,请确保您已经安装并配置好 sshpass 工具。另外,在您的系统中,也建议使用公钥身份验证来替代密码身份验证,以更加安全。 ## 成品案例: ``` if [ -z "${1}" ]; then echo "Please provide a server IP address as the first argument" exit 1 fi remote_host_ip="${1}" #目标地址 #IP改为传参 remote_host_username="root" remote_host_password="symbian1" # 通过 SSH 连接到远程主机并执行命令 execute_remote_command() { sshpass -p "$remote_host_password" ssh -o StrictHostKeyChecking=no -q "$remote_host_username@$remote_host_ip" "$1" } # 获取正在运行的 Docker 容器 ID 和名称,并逐一停止它们 docker_containers=$(execute_remote_command "docker ps -q") echo ${docker_containers} for container_id in $docker_containers; do container_name=$(execute_remote_command "docker inspect --format '{{.Name}}' $container_id | tr -d /") echo "Stopping container $container_name ($container_id)" execute_remote_command "docker stop $container_id" done ``` ## 调用格式: ``` sh StopDocker.sh 192.168.1.241 ```
dz
2023年5月10日 10:11
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码