저는 GPS 위치 검색 프로젝트를 진행 중이며 라우터의 SSH에 연결 한 다음 명령을 실행하여 위도와 경도를 검색해야합니다. 최근에 새 라우터를 받았는데,이 라우터에 연결할 때 적절한 작동을 보장하기 위해 연결될 때 "OK"신호를받은 다음 원하는 명령을 실행하고 아래이 예와 같이 데이터를 얻습니다. 명령이 잘 작동했음을 나타내는 "OK"메시지 :
AT*GNSSSTATUS?
Location Fix=1
Number of satellites = 14
Latitude=+49.17081
Longitude=-123.06970
Date=2016/02/29
Time= 18:55:28
TTFF=9449 milliSeconds
OK
PUTTY의 도움으로 SSH에 연결하면 작동하지만 Python 스크립트와 Paramiko 라이브러리를 통해 위에서 언급 한 것과 동일한 명령 (AT * GNSSSTATUS?)을 보내는 코드를 사용하면 결과는 "OK"입니다. 연결이 활성 상태임을 나타냅니다. 스크립트에 의해 열린 명령 줄이 다음에 올 "ENTER"를 사용하지 않는 것과 같습니다. 이를 테스트하기 위해 PUTTY를 사용하는 경우 "ERROR"를 반환하는 명령을 입력하려고했지만이 경우에도 Python 스크립트는 "OK"를 반환합니다. 이 문제를 해결하기 위해 다음을 추가하여 다른 옵션을 시도했습니다.
stdin, stdout, stderr = client.exec_command('AT*GNSSSTATUS? \r\n')
또는
stdin, stdout, stderr = client.exec_command('AT*GNSSSTATUS? <CR>')
그러나 어떤 경우에도 결과가 바뀌지는 않습니다. 내 데이터 목록에는 "OK"로 표시된 문자열이 하나만 있습니다. 라우터의 연결 부분에서는 모든 것이 작동합니다.
누구나 아이디어가 있습니까?
감사합니다! 철자 오류가 있으면 죄송합니다.
감사합니다 Martin Prikryl !
그래서 나는 당신이 저에게 보낸 링크를 보았고 작동했습니다. 장치에서 Paramiko exec_channel을 사용하여 명령을 실행하는 것이 작동하지 않습니다.
그래서 셸을 사용하고이를 통해 명령을 전송하도록 코드를 변경했습니다. 내 코드는 다음과 같습니다.
shell = client.invoke_shell()
shell.send('AT*GNSSSTATUS? \r')
감사합니다. 좋은 하루 되세요
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다