Expectスクリプトで次のことができますか?
Linuxサーバーが接続されていますlinux_machine1そしてlinux_machine1接続済みlinux_machine2
私のLinuxサーバーは次のものにのみアクセスできます。linux_machine1(LinuxサーバーはTelnet経由で接続できます。linux_machine1ただし、リモートでログインできません。linux_machine2 )
しかし、linux_machine1Telnet経由で接続できますlinux_machine2
だから私の質問は次のようになります
LinuxサーバーでTelnetを実行するには、Expectスクリプトを開発する必要があります。linux_machine1
その後、Telnetを実行して次のことが期待されます。linux_machine2~からlinux_machine1そしてコピーします/etc/ホストファイルソース:linux_machine2私のLinuxサーバーとして
予想されるスクリプトを使用してこのシナリオを実装できますか?
プロセスを説明する簡単な例:
( run expect from Linux server ) --> linux_machine1 --> linux_machine2
Linux server <-- /etc/hosts from linux_machine2 <--
- 注 - スクリプトはLinuxサーバーで有効になると予想されます。
答え1
~からLinuxサーバー、次のスクリプトを実行してください。
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"
ローカルフォルダにLinuxサーバー/etc/hosts
、コピーが表示されます。
ポリスチレン:ローカルコンピュータでテストされており、完全に動作します。それでもTelnetを使用したい場合は、上記のスクリプトで方法を教えてください。必要に応じて、TelnetへのSSHおよびSFTP接続を変更できます。
ポリフェニレンスルフィド:) このスクリプトを準備するのに30分かかったので、レンガや賞賛で答えてくれたら本当に感謝します:) まあ、30分ではありませんが、確かに15分ほどかかりました:)