[英]Trying to run a shell script from Qt with sudo rights
command line (works fine)命令行(工作正常)
$ sudo chPermissions.sh
trying to do this from within a Qt program, using QProcess and have tried the following without success尝试从 Qt 程序中执行此操作,使用 QProcess 并尝试了以下操作但没有成功
code:代码:
QString program = "/bin/sh /usr/bin/chPermissions.sh";
m_process->start(program);
m_process->waitForFinished();
qDebug() << m_process->exitCode();
result: 0 (the script ran but without sudo rights & didn't work!)结果:0(脚本运行但没有 sudo 权限并且不起作用!)
code:代码:
QString program = "sudo /bin/sh /usr/bin/chPermissions.sh";
m_process->start(program);
m_process->waitForFinished();
qDebug() << m_process->exitCode();
result: 1结果:1
code:代码:
QString program = "/usr/bin/sudo /bin/sh /usr/bin/chPermissions.sh";
m_process->start(program);
m_process->waitForFinished();
qDebug() << m_process->exitCode();
result: 1结果:1
code:代码:
QString program = "/bin/sh";
QStringList arguments;
arguments << "/usr/bin/chPermissions.sh";
m_process->start(program, arguments);
m_process->waitForFinished();
qDebug() << m_process->exitCode();
result: 0 (the script ran! no sudo rights)结果:0(脚本运行!没有 sudo 权限)
code:代码:
QString program = "/bin/sh";
QStringList arguments;
arguments << sudo << "/usr/bin/chPermissions.sh";
m_process->start(program, arguments);
m_process->waitForFinished();
qDebug() << m_process->exitCode();
result: 127 (command not found)结果:127(未找到命令)
code:代码:
QString program = "/bin/sh";
QStringList arguments;
arguments << /usr/bin/sudo << "/usr/bin/chPermissions.sh";
m_process->start(program, arguments);
m_process->waitForFinished();
qDebug() << m_process->exitCode();
result: 2 (Misuse of shell builtins)结果:2(误用 shell 内置函数)
code:代码:
QString program = "/bin/bash";
QStringList arguments;
arguments << "-c" << "\"/usr/bin/sudo /usr/bin/chPermissions.sh"\";
m_process->start(program, arguments);
m_process->waitForFinished();
qDebug() << m_process->exitCode();
result: 127结果:127
code:代码:
QString shellCommandLine = "/usr/bin/chPermissions.sh";
QStringList arguments;
arguments << "-c" << shellCommandLine;
m_process->start("/bin/sh", arguments);
m_process->waitForFinished();
qDebug() << "Exit Code: " << m_process->exitCode();
result: 0 (the script ran!)结果:0(脚本运行!)
code:代码:
QString shellCommandLine = "sudo /usr/bin/chPermissions.sh";
QStringList arguments;
arguments << "-c" << shellCommandLine;
m_process->start("/bin/sh", arguments);
m_process->waitForFinished();
qDebug() << "Exit Code: " << m_process->exitCode();
result: 1结果:1
code:代码:
QString shellCommandLine = "/usr/bin/sudo /usr/bin/chPermissions.sh";
QStringList arguments;
arguments << "-c" << shellCommandLine;
m_process->start("/bin/sh", arguments);
m_process->waitForFinished();
qDebug() << "Exit Code: " << m_process->exitCode();
result: 1结果:1
code:代码:
QString shellCommandLine = "/usr/bin/chPermissions.sh";
QStringList arguments;
arguments << "-c" << shellCommandLine;
m_process->start("/bin/sh", arguments);
m_process->waitForFinished();
qDebug() << "Exit Code: " << m_process->exitCode();
result: 0 (script ran without sudo rights)结果:0(脚本在没有 sudo 权限的情况下运行)
Anyone able to let me know the secret of how to do this?任何人都可以让我知道如何做到这一点的秘密? (or put me out of my misery if it's not possible)
(或者如果不可能的话,让我摆脱痛苦)
TIA TIA
Andy安迪
Not solved as such.没有这样解决。
I got round this by我解决了这个问题
hope that makes sense.希望这是有道理的。
not happy, but it works.不高兴,但它有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.