Ssh command from Qt
Ssh command from Qt
我在QT应用程序中遇到SSH的问题。我需要运行一个命令,该命令在远程服务器上删除文件。我试图使用Qprocess类来实现它。因此,我将" SSH"作为命令的名称和必要的args传递。通常,它看起来像这样:
QStringList params;
params.append(" user@" + ::host +
" "rm /tmp/" + ::fileName + """);
d->impDelProcess->start("ssh", params);
,但是毕竟它一直在询问一个密码,尽管我生成了SSH键并复制了远程服务器的公共密钥。此外,当我在终端中运行上面的命令时:
ssh user@host "rm /path/fileName"
它的工作原理。该文件已删除,没有询问密码。因此,问题在QProcess中。有什么方法可以摆脱密码?谢谢!
当您使用字符串列表时,这些是单独的参数。尝试以下操作:
params.append("user@" + ::host");
params.append("rm /tmp/" + ::fileName);
将使QT通过SSH的两个参数,登录字符串和在远程主机处执行的命令。
重要说明!假定::filename
不包含空格或其他任何令人讨厌的!您可以通过此处绕过空间:
params.append("rm '/tmp/" + ::fileName + "'");
,但它在路径中无济于事或..
...想象一下文件名是../home/user/*
...因此最好是值得信赖的输入,或者您需要对其进行消毒(但这超出了范围这个答案(。
您在问题代码中所做的是构造一个与此shell命令行的单个参数:
ssh 'user@host "rm /path/filename"'
相关文章:
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- qt get child (Callout) from QChart
- Ssh command from Qt
- Call AccountKit API from C++/Qt
- Qt 动态创建 QWidget from QString.
- Using the Kinect from Qt Creator
- Qt Blurry QMovie (from gifs)
- 将 C# 中的"from ... in "迭代转换为C++ (Qt)
- From Glut and Glew to Qt opengl?
- Qt reading from QTextStream
- Uninstalling Qt Creator 2 from Mac
- Qt: Pass QGraphicsSceneContextMenuEvent from QGraphicsView