Shellscript для чтения файлов журналов docker контейнерного приложения на удаленной виртуальной машине не работает - PullRequest
0 голосов
/ 17 января 2020

У меня есть приложение, работающее на ВМ 100.111. . *. Я могу использовать приведенные ниже команды, чтобы подключиться к виртуальной машине и войти в docker bash, чтобы прочитать файл журнала, который доступен по пути /logs/MTServices/applogs/application.log. Шаги:

  1. Do s sh до VM ssh -i ~/.ssh/dev_rsa infy@100.111.**.*** enter image description here

enter image description here

После подключения выполните команду docker sudo docker exec -it MTWLS bash enter image description here

Теперь я нахожусь в docker bash и я могу использовать команду, чтобы изменить каталог для чтения журналов. enter image description here

Пока все хорошо. Теперь, когда я создаю сценарий оболочки для вышеуказанных команд и запускаю его, он, похоже, не работает. Ниже приведен сценарий.

#!/bin/bash

echo "starting"
VM_Host="100.111.**.***" 
echo $VM_Host
pattern="Performing asynchronous operation for tenant"
echo $pattern
WLSType="MTWLS"
echo $WLSType

echo "running ssh"
ssh -i ~/.ssh/devus1_rsa opc@${VM_Host}
if [ "$?" -eq "0" ]
then
    echo "last command was success"
    sudo docker exec -it ${WLSType} bash
    echo $(pwd)
fi
if [ "$?" -eq "0" ]
then
    cd /logs/ETLServices/applogs
    echo $(pwd)
fi
grep -s "$pattern" application_structured.log

1 Ответ

0 голосов
/ 17 января 2020

Я не могу попробовать сам, но я думаю, что проблема здесь

sudo docker exec -it ${WLSType} bash

Тут вы запускаете новый интерактивный процесс и передаете ему управление: я думаю, что следующие строки вашего скрипта будет выполнен только после того, как вы закроете процесс docker

...