У меня такое ощущение, что команду "podman" следует отправлять в ОС, а не в программу "container_check". Если это правда, то, возможно, это все, что вам нужно:
Если «container_check» выходит из нуля или отправляет что-либо в stderr, exec
выдаст ошибку, и это нужно отловить:
#!/usr/bin/expect -f
if {[catch {exec ./container_check 2>@1} check_output] != 0} {
# a non-zero exit status: do we care?
}
if {![string match "*wpa_supplicant-udmpro:v1.0*" $check_output]} {
exec podman container start wpa_supplicant-udmpro
}
ref: exe c, string
Если программа container_check
действительно требует взаимодействия, то я ошибаюсь.
Поскольку вы используете sshpass, вам не нужно взаимодействовать с процессом s sh: ожидайте, что это неправильный инструмент для этой работы. Придерживайтесь простого bash сценария.
#!/bin/bash
doSsh() {
sshpass -p "password" ssh -o StrictHostKeyChecking=no username@ipaddress "$@"
}
if [[ "$( doSsh docker container ls )" != *"wpa_supplicant-udmpro:v1.0"* ]]; then
doSsh podman container start wpa_supplicant-udmpro
fi