Как сохранить код выхода удаленной команды sshpass в переменной моего локально работающего скрипта

То, что вам нужно в вашем скрипте, это не бесконечный цикл, а файл блокировки.

Затем вызовите сценарий, который выполняет работу внутри сценария-оболочки.

#!/bin/sh

if [ -f /tmp/.lock.my-mgr ]
then
        echo "Program in use... exiting..."
        exit 10
fi

/bin/touch /tmp/.lock.my-mgr

/usr/local/bin/myscript.sh

/bin/rm /tmp/.lock.my-mgr

Если вы хотите, чтобы эта задача выполнялась пакетом каждые несколько минут, запланируйте это с помощью cron.

Редактировать:

PID сценария, работающего с циклом, может быть помещен в файл с чем-то вроде

echo $! > /var/tmp/script1.pid

(одним шрифтом ).

Чтобы проверить, запущен ли он из второго скрипта, используйте команду ps, что-то вроде

ps -p `cat /var/tmp/script1.pid`

, а затем проверить его статус с помощью $? переменная, которая должна быть равна 0, если ps нашел этот pid, или 1, если нет. Это базовая логика, но ее можно было бы написать с лучшими тестами, например, на случай, если файл pid не существует.

0
19.05.2021, 14:36
1 ответ

Я сам нашел решение:

sshpass -p $passvar ssh -o StrictHostkeyChecking=no -t $uservar@$ItemHostIp 'touch /does/not/exist.txt &>/dev/null'; errm=$?
0
28.07.2021, 11:31

Теги

Похожие вопросы