在C ++中通过ssh远程发送shell命令

时间:2014-04-06 09:25:11

标签: c++ ssh raspberry-pi pwm

我想打开一个ssh会话到我的Raspberry Pi并在我想要的时间运行简单的命令echo 0=+10 > /dev/servoblaster(意味着不使用system("ssh pi@192.168.1.5 echo 0=+10 > /dev/servoblaster"),因为再次运行ssh需要时间)。 C ++中最简单的方法是什么?

4 个答案:

答案 0 :(得分:0)

假设您只需要单向通信,请使用FILE *ssh = popen("ssh pi@192.168.1.5", "w")而不是system打开ssh连接。这会给你一个写入的句柄,例如fprintf(ssh, "echo 0=%#d > /dev/servoblaster", 10);。然后可以使用ssh连接,直到稍后pclose(ssh);为止。

如果您需要回读,则需要打开管道的两侧,这需要{#1}}正确的fork作业。在这种情况下,你可以从这个例子开始。

fork() and pipes() in c

答案 1 :(得分:0)

对于发送简单的控制命令,至少可以说ssh是一种过度杀伤力。

人们通常会使用简单的串口。这可以通过多种方式完成,使用QtSerialPort等库或只需浏览manual termios settings

你可以使用" gserial"用于通过USB连接获得串行端口操作并将其用作常规串行端口。

答案 2 :(得分:0)

我没有使用它,但看起来很有希望。

http://api.libssh.org/master/libssh_tutor_guided_tour.html

答案 3 :(得分:0)

  

我正在编写一个C ++程序,通过上面的命令通过Raspberry Pi控制伺服电机,如何在没有ssh的情况下访问和运行Raspberry Pi的命令?

您可以使用REST提供的WebIOPi API访问和运行Raspberry Pi控制伺服电机的命令。