是否可以通过expect脚本执行以下操作?
我有连接到的 Linux 服务器linux_machine1和linux_machine1连接到linux_machine2
我的 Linux 服务器只能访问linux_machine1(linux服务器可以telnet到linux_machine1但无法远程登录linux_machine2 )
但从linux_machine1我可以通过 VIA telnet 访问linux_machine2
所以我的问题是:
我需要开发从 Linux 服务器执行 telnet 的 Expect 脚本linux_machine1
然后期望将执行 telnet 到linux_machine2从linux_machine1并将复制/etc/主机文件来自linux_machine2到我的 Linux 服务器
这个场景可以用expect脚本实现吗?
描述该过程的简短示例:
( run expect from Linux server ) --> linux_machine1 --> linux_machine2
Linux server <-- /etc/hosts from linux_machine2 <--
- 备注 - 期望脚本需要从 Linux 服务器激活
答案1
从Linux服务器,运行以下脚本。
不要使用,telnet
因为它未加密。您可以使用ssh
and ,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,上面的脚本将告诉您如何操作。您可以根据需要修改 ssh 和 sftp 到 telnet 的连接。
聚苯硫醚:如果您能用砖块或赞美来回复我,我将非常感激,因为我花了半个小时来准备这个脚本:)好吧,不是半小时,但绝对是 15 分钟:)