SSH를 통해 텍스트 파일을 텔넷으로 전송

SSH를 통해 텍스트 파일을 텔넷으로 전송

SSH 클라이언트에서 열려 있는 텔넷 세션에 명령이 포함된 텍스트 파일을 파이프하고 싶습니다. 이것이 가능합니까? 예: 다음 cmds과 같은 명령이 포함된 텍스트 파일이 있습니다.

FirstFunction(A,B,C,0x9001,123456,7);
SecondFunction(A,B,C1,2,4);
ThirdFunction(A,B,C,D,E,F);

클라이언트 SSH 셸에 열려 있는 텔넷 세션에 각 명령을 복사하여 붙여넣을 수 있습니다. 각 회선을 텔넷 세션으로 직접 스트리밍하도록 이를 자동화할 수 있습니까?

편집 1
SSH 호스트에서 다음과 같이 텔넷 세션(명령이 실행되어야 하는 위치)을 엽니다.telnet MyHost

편집 2
나는 시도했다:

$ ssh root@cc1 telnet MyHost < cmds                                                                                       
Welcome to MyHost                                                                                                              
Trying 10.254.0.2...                                                                                                                            
Connected to MyHost.                                                                                                                            
Escape character is '^]'.                                                                                                                       
Connection closed by foreign host.
ron@jpax-build07:~/tmp$ 

cmds 파일을 텔넷 세션에 전혀 연결하지 않는 것 같습니다.
내가 시도한 것은 다음과 같습니다.

$ ssh root@cc1 cmds - | telnet MyHost
Welcome to MyHost
cat: cmds: No such file or directory
telnet: could not resolve MyHost/telnet: Name or service not known

편집 3
expect다음을 설치 하고 시도했습니다.

#!/usr/bin/expect
spawn ssh root@ccTest telnet -l MyHost
#expect Password:
#send "mypassword\r"
expect {-> }
send "some_cmd(20)\r"
expect {$ }
send "exit\r"
expect eof

그러나 이것이 내가 얻는 것입니다:

$ ./jpax_txcmd.sh 
spawn ssh root@ccTest telnet -l MyHost
bad flag "-> ": must be -glob, -regexp, -exact, -notransfer, -nocase, -i, -indices, -iread, -timestamp, -timeout, -nobrace, or --
    while executing
"expect {-> }"
    (file "./jpax_txcmd.sh" line 5)
$

답변1

텔넷의 문제점은 파일 끝까지 읽으면 연결이 닫히고 출력이 표시되지 않는다는 것입니다. 간단한 방법은 추가 시간 동안 입력을 열어 두는 것입니다. 예를 들면 다음과 같습니다.

(cat cmds; sleep 15) | ssh root@cc1 telnet MyHost 

분명히 이것은 신뢰할 수 있는 솔루션이 아니므로 리모콘이 종료되는 시점을 감지하는 기능(예: )을 사용해야 합니다 expect. 다음 예제 Expect 스크립트는 myusername비밀번호로 로그인 하고 쉘 프롬프트 에 mypassword명령을 보내는 것과 관련된 SSH 대화를 통한 일반적인 텔넷을 구현합니다.ls -l$<space>

#!/usr/bin/expect
spawn ssh root@cc1 telnet -l myusername myhost
expect Password:
send "mypassword\r"
expect {$ }
send "ls -l\r"
expect {$ }
send "exit\r"
expect eof

관련 정보