shell脚本实现连接远程服务器(ECS)

原文地址:shell脚本实现连接远程服务器(ECS)

说明

本篇文章主要使用expect脚本来实现自动连接远程服务器并实现交互,不会大篇幅介绍expect的用法,有兴趣的读者可以自己了解,expect是个很强大的实现自动化交互的工具哦~~

代码示例

#!/usr/bin/expect
set timeout 10
set password 123456
spawn ssh ubuntu@xxx.xxx.xxx.xxx

expect {
    "(yes/no)?" {
        send "yes\r";
        expect "password:";
        send "${password}\r";
        exp_continue;
    }
    "password:" {
        send "${password}\r";
        exp_continue;
    }
}
interact
  • 第一行的 #!/usr/bin/expect 是告诉系统在执行这个脚本的时候用哪个命令来执行,这边是用expect,是一个类似bash和sh的shell

  • 第二行 set timeout 10 设置超时时间为10s

  • 第三行 set password 123456 定义了一个变量 password,这个变量记录了登陆远程服务器的密码

  • 第四行 spawn ssh ubuntu@xxx.xxx.xxx.xxx 调用 spawn 命令来执行一个系统命令。spawn是expect shell的内建命令,只有在expect环境下才可以使用。这行代码的功能就是通过ssh连接远程ECS

  • 6~17 行用了一个 expect 命令,可以将这个命令理解为期待shell中输出结果中包含什么关键字

    • 如果包含的是 (yes/no)? 则表示是第一次连接这个远程服务器,需要手动确认是否保存生成的密钥到 ~/.ssh/know_hosts 当中,通过send命令输出 yes 到shell中。之后再次期望shell的输出结果中包含 password:关键字,再用send命令输出密码。
    • 如果包含的是 password: 则表示不是第一次连接这个远程服务器,直接用send输出密码即可

正常如果网络正常,服务器ip、用户名、密码正确的话,执行上面的脚本就可以自动连接到远程ecs了。(注意使用的时候将上述用户名、密码、ip替换成自己的)

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值