Подождите, пока скрипт Python вернет 0
Я пытаюсь написать сценарий, который ожидает, когда база данных будет в сети. Скрипт, который проверяет соединение с базой данных, написан на python и должен вызываться каждые 5 секунд. Если скрипт возвращает 0, основной скрипт должен продолжаться.
Я никогда не писал в оболочке, поэтому я могу только догадываться, как привести сценарий python в состояние цикла while. Вот моя попытка, но я понятия не имею, как сделать это правильно.
Скрипт Python работает хорошо.
psqltest.py:
#!/usr/bin/python2.4
#
import psycopg2
try:
db = psycopg2.connect("dbname='postgis' user='postgres' host='db' password='postgres'")
except:
exit(1)
exit(0)
мой основной скрипт оболочки:
echo waiting for database...
while [ python /root/psqltest.py && echo 0 || echo 1 ]
do
sleep 5
done
сообщение об ошибке:
1 ]
Спасибо за помощь мне
2 ответа
Сценарий оболочки будет просто
while ! python /root/psqltest.py; do
sleep 5
done
или менее известный
until python /root/psqltest.py; do
sleep 5
done
Я улучшил свои скрипты, теперь bash только вызывает скрипт на python и ждет его завершения, как упоминал Кристоф. Пока это работает, но я пытаюсь улучшить его еще больше.
#!/usr/bin/python3
#
import psycopg2
import time
import sys
db = None
sys.stdout.write('waiting ')
while db is None:
try:
db = psycopg2.connect("dbname='postgis' user='postgres' host='db' password='...'")
db.close()
except:
sys.stdout.write('.')
sys.stdout.flush()
time.sleep( 5 )
print('')
exit(0)