xargs和sshpass一起使用的坑
2021-01-13 本文已影响0人
轩辕啸天
背景
远程删除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
- sshpass -p {server_ssh}进行远程登录。
- docker ps -a | grep my_project 查看my_project容器的信息。
- awk '{ print $1 }' 显示容器信息的第一栏,即容器id。
- 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
结语
以上方案如果对你有帮助,就点个赞吧!如果有问题或错误请在评论区评论。