2016-10-07 5 views
1

펌웨어를 600 plus 장치에 푸시 할 수 있도록 배치 파일을 작성 중입니다.pcp 호스트 키 프롬프트에 대한 자동 응답으로 echo y 사용

나는 명령 프롬프트에서 펌웨어를 밀고 SSH 키 프롬프트에 예라고 대답하는 한 줄에 다음 명령을 실행할 수 있습니다.

echo y | pscp -v -scp -pw password C:\CNA1000\Firmware\CNA1504v1.1.7\CNA1504v1_1_7.run [email protected]:/tmp/.  

에코 y | SSH 키 프롬프트에 예라고 응답합니다. 그러나 배치 파일에 추가하려고하면 명령 프롬프트에 오류가 발생하여 암호가 마음에 들지 않습니다.

특히, 다음과 같이 보입니다.

Using username "root". 
[email protected]'s password: 
Sent password 
Access denied 
Access denied 

그리고 난 CTRL + C를 치기 전까지 반복됩니다.

프로세스를 자동화 할 수 있도록 더 나은 방법이 있습니까?

감사합니다,

+0

질문을 편집하여이 배치 파일의 관련 부분을 포함시킬 수 있습니까? – Kenster

+0

SendKeys로 시도해 볼 수 있습니까? – npocmaka

+1

암호에 기호 (예 :'%'기호)가 포함되어 있습니까? – rojo

답변

0

맹목적으로 "y"로 대답하지 않으면 man-in-the-middle attacks에 대한 보호를 잃게됩니다.

호스트 키 지문으로 -hostkey switch을 사용해야합니다.


실제로 WinSCP와 동일하므로 사용이 끝났습니다. WinSCP open command에는 -hostkey 스위치도 있습니다.

-hostkey 스위치 없이도 작동하는 경우 호스트 키가 WinSCP의 이전 대화 형 사용에서 Windows 레지스트리에 캐시되기 때문입니다.

마찬가지로 pscp에서도 마찬가지입니다. 대화식으로 PuTTY 나 pscp (또는 PuTTY 제품군의 다른 도구)를 사용하고 호스트 키를 확인했다면 캐시 될 것입니다. 그리고 나중에 자동 사용은 확인하지 않고 통과합니다.

0

내가 제대로 내가하려고했던 일을하기 위해 배치 파일에 대한 WinSCP.net을 사용하여 끝났다. 다음은 WinSCP.net에서 위의 작업을 수행하는 방법의 예입니다.

@echo off 

"C:\Program Files (x86)\WinSCP\WinSCP.com"^
    /log="C:\Program Files (x86)\WinSCP\WinSCP.log" /ini=nul^
    /command^
    "open scp://root:[email protected]/"^
    "Put C:\CNA1000\Firmware\CNA1504v1.1.7\CNA1504v1_1_7.run /tmp/."^
    "exit" 

set WINSCP_RESULT=%ERRORLEVEL% 
if %WINSCP_RESULT% equ 0 (
    echo Success 
) else (
    echo Error 
) 

exit /b %WINSCP_RESULT% 

각 IP 주소에 대해 반복하십시오.