@alexey_abramov

QProcess — как правильно последовательно выполнять shell команды?

Здравствуйте!
Делаю программу, которая должна менять бинарник по SSH. Он в автозапуске, следовательно если он запущен, перекопировать через scp нельзя, будет писать что текстовый файл busy
Вопроса 2.
1. При QProcess::execute("ssh root@192.2.2.2 'kill -15 $(pgrep prog")' ) или же используя killall prog не может найти команды killall и kill. К слову говоря rm не видит данного файла. Почему вызваны такие "глюки", если зайдя напрямую из терминала по ssh, все команды выполняются.
К слову говоря текстовые файлики копируются через execute("scp ....") правильно и нормально
2. Второй вопрос вытекает из первого, мне кажется что требуется не используя execute работать, а через создание "терминальной сессии" start("ssh root@192.2.2.2"),а затем продолжить выполнять команды. Только как?( увы в доках этого не нашел, подскажите пожалуйта как последовательно выполнять команды не через execute, чтобы не создавать каждый раз новую сессию, а работать в 1, например зайти на ssh и там внутри работать. Желательно просто навести на нужный метод
Спасибо заранее
  • Вопрос задан
  • 387 просмотров
Решения вопроса 1
gbg
@gbg
Баянист. Тамада. Услуги.
1. Команды не срабатывают потому, что это или встроенные команды bash (kill), или путь нужно писать полностью (killall - /usr/bin/killall).

2. Для работы по ssh вам нужен не qprocess, a libssh. Вот через нее вы и сессию SSH сможете открыть, и покомандовать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы