qt/C++下Windows远程控制Linux系统下软件启动和关闭(附源代码)

1、windows由于没有直接的方法远程控制Linux系统下软件,因此需要在linux下安装SSH服务。

2、Linux系统安装SSH服务请参考:Linux环境搭建(一)— 实现ssh连接_linux 配置ssh csdn-CSDN博客

3、在windows下由于使用ssh服务,因此也需要使用Qssh对应的操作请参考:qt/C++下windows实现远程控制linux开关机(附源代码)_c++ 远程关linux-CSDN博客中第三点。

4、废话不多说,直接上控制代码:

void softwareControlModel::softwareControlLinux(QString str, QString Ip)
{
	QSsh::SshConnectionParameters parameters;
	parameters.port = 22;
	parameters.userName ="root";//建议使用root权限登录ssh,防止后续操作缺少权限问题
	parameters.password = "123456";
	parameters.host = Ip;
	parameters.timeout = 20;
	parameters.authenticationType = QSsh::SshConnectionParameters::AuthenticationTypePassword;

	QSsh::SshConnection* pSshCon = new QSsh::SshConnection(parameters);
	bool ret = connect(pSshCon, &QSsh::SshConnection::connected, this, [=]() {
		QSsh::SshConnection* pSshCon = (QSsh::SshConnection*)sender();
		QSharedPointer<QSsh::SshRemoteProcess> myShell = pSshCon->createRemoteShell();
		connect(myShell.data(), &QSsh::SshRemoteProcess::started, this, [=]() {
			QSsh::SshRemoteProcess* pSshRemote = (QSsh::SshRemoteProcess*)sender();
			if (str == "start")
			{
				pSshRemote->write(QString("cd 进行控制的软件所在文件路径\n").toLatin1().data());
				pSshRemote->write(QString("./软件启动文件名\n").toLatin1().data());
				pSshRemote->write(QString("pgrep -f 软件名\n").toLatin1().data());
			}
			else if (str == "stop")
			{
				pSshRemote->write(QString("pgrep -f 软件名\n").toLatin1().data());
				pSshRemote->write(QString("pkill 软件名\n").toLatin1().data());
			}
		});
		myShell->start();
	});
	pSshCon->connectToHost();
}

5、windows控制端引用如下:

void softwareControlModel::controlCmd(QString cmd, QString ip)
{
    if(ip == "Linux主机ip")
    {
        if (cmd == "start")
        {
            softwareControlLinux("start", ip);
        }
        else if (cmd == "stop")
        {
            softwareControlLinux("stop", ip);
        }
    }
}

版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值