英文:
I need help creating a script to find error logs in Docker
问题
I understand your request. Here's the translated portion of your text:
我正在尝试创建一个Bash脚本,可以从Docker容器中查找错误日志。基本上,我们会有一个像ABC1234567这样的ID,我正在尝试创建一个Bash脚本,该脚本会询问ID,并告诉您哪个容器有问题。到目前为止,我有以下代码:
#!/bin/bash
# 询问案例ID
echo '输入案例ID'
read caseID
# 运行容器检查
docker logs con1 2>&1 | grep -B 4 $caseID
docker logs con2 2>&1 | grep -B 4 $caseID
docker logs con3 2>&1 | grep -B 4 $caseID
docker logs con4 2>&1 | grep -B 4 $caseID
docker logs con5 2>&1 | grep -B 4 $caseID
docker logs con6 2>&1 | grep -B 4 $caseID
请注意,这段翻译的内容与您的代码相关,但不包括回答翻译问题的部分。如果您需要进一步的帮助或有其他问题,请随时提问。
英文:
I'm trying to create a bash script that can find error logs from a docker container. Essentially we will have an ID like ABC1234567 and I am I'm trying to create a script in Bash that asks for the ID and tells you which container has the error of the case. The code I have so far is:
#!/bin/bash
#ask for case ID
echo 'Enter Case ID'
read caseID
#run container check
docker logs con1 2>&1 | grep -B 4 $caseID
docker logs con2 2>&1 | grep -B 4 $caseID
docker logs con3 2>&1 | grep -B 4 $caseID
docker logs con4 2>&1 | grep -B 4 $caseID
docker logs con5 2>&1 | grep -B 4 $caseID
docker logs con6 2>&1 | grep -B 4 $caseID
Now, this does work, because once the ID is found in one of the containers, it does throw back a bunch of dialogue about that container, including the case ID, but it's mostly useless info and really it's just an indicator that we found the right container. The problem is that it doesn't tell me which container had the case ID. What would I need to add so that it can echo the Container name back at us? For example if I run the code I am expecting it to just say something like
Error in Con3
I tried to make an ifelse statements but I don't necessarily know the argument I am looking for. If it helps the output that comes out when the error ID is found in one of the containers actually contains that ID as a casename. This is my first time actually working with Docker so I am a bit limited in my knowledge for it.
答案1
得分: 0
一种可能性是重构您的脚本以利用循环,并输出当前容器名称。
#!/bin/bash
# 询问案例 ID
echo '输入案例 ID'
read -r caseID
for i in 1 2 3 4 5 6 ; do
echo "检查 con$i"
docker logs "con$i" 2>&1 | grep -B 4 "$caseID"
done
英文:
One possibility might be to refactor your script to utilize a loop and output the current container name.
#!/bin/bash
#ask for case ID
echo 'Enter Case ID'
read -r caseID
for i in 1 2 3 4 5 6 ; do
echo "checking con$i"
docker logs "con$i" 2>&1 | grep -B 4 "$caseID"
done
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论