Надо подключиться по SSH к железке, ввести команду и получить результат. Взял за основу код которым я скрипт запускал, но тут мозгов явно не хватает. Два дня в нете просидел ничего подобного не нашел,вернее похожие проблемы были а решения нет. Использовать какие то сторонние библиотеки для меня совершенно непонятно. Скачал libssh2-1.1 посмотрел на файлы, понял что я баран.
Создал новый проект. Добавил туда код касаемо QProcess.
Вот исходник.
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
stroka="";
ui->setupUi(this);
SSH();
}
MainWindow::~MainWindow()
{ myProcess->close();
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::SSH()
{
QString program;
QStringList arguments;
//program="C:\\Program Files\\OpenSSH\\bin\\ssh.exe";
program="C:\\Program Files\\ICW\\Bin\\ssh.exe";
arguments <<"root@192.168.0.55";
myProcess=new QProcess();
myProcess->setEnvironment(QProcess::systemEnvironment());
//myProcess->setProcessChannelMode(QProcess::ForwardedChannels);
connect(myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(slotMessages()) );
connect(myProcess,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(processFinished(int,QProcess::ExitStatus)));
connect(myProcess, SIGNAL(readyReadStandardError()), this, SLOT(slotMessages()) );
connect(myProcess,SIGNAL(error(QProcess::ProcessError)),this,SLOT(processError(QProcess::ProcessError)));
myProcess->start(program,arguments);
}
void MainWindow::slotMessages()
{
stroka=stroka+tr(myProcess->readAllStandardOutput());
qDebug()<< "Standart error! "<<tr(myProcess->readAllStandardError());
qDebug()<< stroka;
}
void MainWindow::processFinished(int exitCode,QProcess::ExitStatus ExitStatus)
{
qDebug()<< "exitcode"<< exitCode;
}
void MainWindow::processError(QProcess::ProcessError error)
{
qDebug()<< "error! "<<error;
}
Пока экспериментирую с сервером FreeBSD, через консольные приложения подключаюсь (о них пишу ниже).
Установил OpenSSH for Windows v3.8.1 , в коде строчка для него закомментирована. Запускаю.
Вижу:
Standart error! "Pseudo-terminal will not be allocated because stdin is not a terminal.
Установил Copssh_3.1.1. то же самое.
Нашел в нете что поможет ключ -Т (правда ничего конкретно не понял для чего и почему,все на инглише), добавил его в аргументы.
Приложение запускается но ничего не сообщает. В командной строке оно запрашивает пароль. Тут же я не знаю чего делать.