Windows 内の Qt アプリケーションによって呼び出されるバッチ scrip(.bat) からの bash スクリプトの実行に関して助けが必要です。
問題の概要: Qt アプリケーションを介して Windows から Linux ボックスにファイルを転送し、Linux 内で bash スクリプトを実行していくつかのコマンドを実行する必要があります。
これまでに行ったこと: Qtアプリケーションを介してWindowsからLinuxボックスにファイルを正常に転送できます。Qt アプリケーションは、ファイルを転送するバッチ ファイルを呼び出します
例
void Qt_intro101::on_file_upgrade_clicked()
{
QFileInfo fileInfo( ui->selected_file->text() );
if( !fileInfo.exists() )
{
QMessageBox::information(this, tr("Information"),
tr("Unable to find file for upgrading!"));
return;
}
// copying update
QString fileName = fileInfo.absoluteFilePath();
//Check if cmd.exe is present in Clients system and is located at correct path
QFileInfo cmdFile( "C:\\Windows\\system32\\cmd.exe");
if( !cmdFile.exists() )
{
QMessageBox::information( this, tr( "Information" ),
tr("Failed to find the cmd.exe ... Check cmd.exe is installed and is in C:\\Windows\\system32\\ !"));
return;
}
QStringList arguments ;
arguments << " /c" <<"c:\\temp\\upgradeTesting\\test.bat"<< fileName ;
QProcess *process = new QProcess( this );
process->start( cmdFile.absoluteFilePath(), arguments ) ;
if( !process->waitForStarted() )
{
QMessageBox::information(this, tr("Information"),
tr("Failed to start the process for upgrading!"));
return;
}
QMessageBox::information(this, tr("Information"),
tr("Please wait while system is upgrading .. click Ok to exit this box"));
qDebug() << fileName ;
process->waitForFinished() ;
qDebug() << process->readAllStandardOutput();
QMessageBox::information( this, tr( "Information" ),
tr( "Upgradation is successful.. Please restart the system") ) ;
process->deleteLater();
}
次のようなコマンドを実行するバッチスクリプト(.bat)を作成しました
pscp -pw "lol" "%TARGET_UPDATE%" squire@"%TARGET_IP%":"%BASE_DIR%"/
以下のバッチファイルを介してbashスクリプトを実行するには、バッチファイル内のコマンドです
putty -pw "lol" -m test-update.sh squires@"%TARGET_IP%"
私もそのようなことを試しました
C:\\Program Files\\putty.exe -pw "lol" -m test-update.sh squires@"%TARGET_IP%"
どこが間違っているのか教えてください。
ありがとう、よろしく、
サム