Russian Qt Forum

Qt => Вопросы новичков => Тема начата: paravoz1k от Сентябрь 26, 2016, 22:37



Название: QProcess - вопрос по выполнению shell команд
Отправлено: paravoz1k от Сентябрь 26, 2016, 22:37
Здравствуйте!
Делаю программу, которая должна менять бинарник по 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 и там внутри работать. Желательно просто навести на нужный метод
Спасибо заранее


Название: Re: QProcess - вопрос по выполнению shell команд
Отправлено: qate от Сентябрь 27, 2016, 01:16
1. может так : QProcess::execute("ssh", QStringList() <<  "root@192.2.2.2" << "kill -15 $(pgrep prog)"); ? (щас под рукой рабочего кода нет)
2. не надо в этом направлении думать, ssh все может сделать и без "сессий". сначала сделай все в командной строке, а потом как заработает переноси в QProcess
3. я бы подумал сделать дополнительный sh файл, который делал бы всё нужное по ssh и прочее, а из qt программы только бы его вызывал с параметрами