Expect 스크립트를 통해 다음을 수행할 수 있습니까?
Linux 서버가 연결되어 있습니다linux_machine1그리고linux_machine1연결됨linux_machine2
내 Linux 서버는 다음에만 액세스할 수 있습니다.linux_machine1(Linux 서버는 Telnet을 통해 접속할 수 있습니다.linux_machine1하지만 원격으로 로그인할 수 없습니다.linux_machine2 )
하지만linux_machine1텔넷을 통해 접속할 수 있습니다linux_machine2
그래서 내 질문은 다음과 같습니다
Linux 서버에서 텔넷을 실행하려면 Expect 스크립트를 개발해야 합니다.linux_machine1
그런 다음 텔넷을 수행하여 다음을 수행할 것으로 예상됩니다.linux_machine2~에서linux_machine1그리고 복사할 것이다/etc/호스트파일 출처:linux_machine2내 리눅스 서버로
예상 스크립트를 사용하여 이 시나리오를 구현할 수 있습니까?
프로세스를 설명하는 간단한 예:
( run expect from Linux server ) --> linux_machine1 --> linux_machine2
Linux server <-- /etc/hosts from linux_machine2 <--
- 참고 - 스크립트는 Linux 서버에서 활성화될 것으로 예상됩니다.
답변1
~에서리눅스 서버, 다음 스크립트를 실행하세요.
telnet
암호화되어 있지 않으므로 사용하지 마세요 . 아래와 같이 ssh
및 를 사용할 수 있습니다 .sftp
#This part connects to Machine1
#Just change username, password_here and Linux_machine1 to suit your requirement.
#!/usr/bin/expect -f
spawn telnet -l username linux_machine1
expect "*?assword:*"
send -- "password_here\r"
send -- "\r"
expect eof
#Now we are connected to Linux_Machine1 from where we will connect to Linux_machine2
#Just change username, password_here and Linux_machine2 to suit your requirement.
spawn ftp username@machine2
expect "*?assword:*"
send -- "password_here\r"
send -- "\r"
expect eof
expect "ftp>"
send -- "get /etc/hosts\r"
expect "ftp>"
send "quit \r"
로컬 폴더에리눅스 서버/etc/hosts
, 사본이 나타납니다.
폴리스티렌: 로컬 컴퓨터에서 테스트되었으며 완벽하게 작동합니다. 여전히 텔넷을 사용하고 싶다면 위의 스크립트에서 방법을 알려줄 것입니다. 필요에 따라 텔넷에 대한 SSH 및 SFTP 연결을 수정할 수 있습니다.
폴리페닐렌 설파이드:) 이 스크립트를 준비하는 데 30분이 걸렸기 때문에 벽돌이나 칭찬으로 답해 주시면 정말 감사하겠습니다 :) 음, 30분은 아니지만 확실히 15분 정도 걸렸습니다 :)