使用system()执行ssh命令

时间:2019-05-01 09:49:05

标签: c++ linux ssh

我有一个C ++应用程序(在Linux下),该应用程序打开ssh反向隧道。这很好。但是我在关闭连接时遇到了一些麻烦。 当我从命令行启动应用程序时,close命令将像应该的那样工作,但是当我从后台的cron作业中启动应用程序时,连接不会关闭。

这是我的代码:

打开连接:

std::string cmd = "ssh -o StrictHostKeyChecking=no -f -N -T -M -R 8003:192.168.0.1:8001 -R 8007:192.168.0.1:8005 -R 22222:localhost:22 sshService";
system(cmd.c_str());

要关闭连接,我使用:

std::string cmd = "ssh -T -O exit sshService";
system(cmd.c_str());

我的主机配置是:

Host sshService
    HostName www.addressOfServer.com
    User sshUser
    ControlPersist 4h
    ControlPath ~/.ssh/sshService.ctl
    IdentityFile /home/user/sshUser

有什么想法,我做错了什么?或一些想法,我如何找出问题所在?

1 个答案:

答案 0 :(得分:0)

发现了问题。看来我必须使用tmpfs路径作为控制路径。 我将配置更改为:

/* These have been removed
const os = require('os');
const fs = require('fs');
const path = require('path');
*/

import * as SystemUtils from `./system';

...

SystemUtils.doAThing(app);
...
SystemUtils.doAnotherThing(app);