xargs和sshpass一起使用的坑 xargs: docker: No such file or directory

背景

远程删除docker容器

问题

使用的脚本如下:

sshpass -p ${server_pwd} ssh -o StrictHostKeyChecking=no ${server_ssh} docker ps -a | grep my_project | awk '{ print $1 }' | xargs -r docker rm -f
  1. sshpass -p ${server_pwd} ssh -o StrictHostKeyChecking=no ${server_ssh}进行远程登录。
  2. docker ps -a | grep my_project 查看my_project容器的信息。
  3. awk ‘{ print $1 }’ 显示容器信息的第一栏,即容器id。
  4. xargs -r docker rm -f 将获取到的容器id传递给docker指令,镜像强制关停。

上面的脚本运行起来会报如下错误:

xargs: docker: No such file or directory

解决方案

看到报错信息很疑惑,一顿操作后发现xargs前面还需要远程登录一次,脚本如下:

containers_id=$(sshpass -p ${
      server_pwd} ssh ${
      server_ssh} docker ps -a | grep my_project | awk '{ print $1 }')
echo $containers_id | sshpass -p ${server_pwd} ssh ${server_ssh} xargs -r docker rm -f

结语

以上方案如果对你有帮助,就点个赞吧!如果有问题或错误请在评论区评论。

你可能感兴趣的:(linux,shell)