3つのLinuxシステム間でスクリプト+自動化されたTelnetプロセスが必要です。

3つのLinuxシステム間でスクリプト+自動化されたTelnetプロセスが必要です。

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分ほどかかりました:)

関連情報