내 Raspberry Pi에 ssh 세션을 열고 간단한 명령 echo 0=+10 > /dev/servoblaster
을 원하는 시점에 실행하려고합니다 (다시 ssh를 실행하는 데 시간이 걸리므로 system("ssh [email protected] echo 0=+10 > /dev/servoblaster")
을 사용하지 마십시오). C++에서 가장 쉬운 방법은 무엇입니까?Csh에서 원격으로 쉘 명령 보내기
답변
단방향 통신 만 필요하다고 가정하면 system
대신 FILE *ssh = popen("ssh [email protected]", "w")
으로 ssh 연결을여십시오. 이렇게하면 글을 쓸 핸들이 생깁니다. fprintf(ssh, "echo 0=%#d > /dev/servoblaster", 10);
. ssh 연결은 어느 정도 나중에 pclose(ssh);
까지 사용할 수 있습니다.
다시 읽어야 할 경우 "적절한 fork
구인"이 필요한 파이프의 양쪽을 열어야합니다. 이 경우, 아마도이 예제로 시작할 수 있습니다.
당신의 메서드와 Sysem() 메서드는 처음에는 ssh 연결을 만들기 위해 항상 시간이 걸리고 echo 명령을 실행합니다 (그리고 이것은 내 요구를 충족시키지 못합니다). ssh 연결을 유지하고 그것을 통해 echo 명령을 실행하고 싶습니다. –
예,'popen'을 사용하면'ssh' 연결을 더 오랜 기간 동안 열어두고 여러 명령을 보낼 수 있습니다. 그것이 요점입니다. 나는 그것을 명확하게하기 위해 답을 편집했다. –
간단한 제어 명령을 전송의 경우, SSH는 적어도 말을하는 과잉이다.
사람들은 보통 간단한 직렬 포트를 사용합니다. QtSerialPort와 같은 라이브러리를 사용하거나 manual termios settings을 통해 여러 가지 방법으로이 작업을 수행 할 수 있습니다.
USB 연결을 통한 직렬 포트 작동을 위해 "gserial"을 사용하여 일반 직렬 포트로 사용할 수 있습니다.
LAN 네트워크를 통해 제어하려고합니다. –
@NhanLy : 왜 그러시 겠소? 어쨌든, SSH는 이상합니다. 네트워크 소켓을 사용할 수 있습니다. – lpapp
나는 그것을 사용하지 않았지만 유망 해 보인다.
왜 [tag : C++]입니까? 사실 [tag : ssh]가 왜 그런가요? 여기서 해결하려는 근본적인 문제는 무엇입니까? – Johnsyweb
위의 명령을 사용하여 Raspberry Pi가 서보 모터를 제어하는 C++ 프로그램을 작성하고 있으며 ssh없이 Raspberry Pi에 액세스하여 명령을 실행할 수 있습니까? –
직렬 포트를 통해 제어 명령을 보내지 않는 이유는 무엇입니까? 그것은 가장 직관적 일 것입니다. – lpapp