编写脚本实现登陆远程主机

Posted JohnnyFang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写脚本实现登陆远程主机相关的知识,希望对你有一定的参考价值。

    使用expect和shell编写脚本均可登录远程主机。

  1. expect脚本登录

    expect 是由Don Libes基于 Tcl( Tool Command Language )语言开发的,主要应用于自动化交互式操作的场景,借助 expect 处理交互的命令,可以将交互过程如:ssh登录,ftp登录等写在一个脚本上,使之自动化完成。尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率。

1.1 自动登录

    准备两台虚拟机,笔者这边两台虚拟机的ip分别为10.10.10.153和10.10.10.154(如下图)

编写脚本实现登陆远程主机_置位

编写脚本实现登陆远程主机_置位_02

    以hello-world虚拟机远程登录centos8.3为例,在hello-world虚拟机上创建脚本expect1,脚本中,需设置好远程登录主机的ip、登录mi码,在询问yes或no的环节选择yes(如下图)

编写脚本实现登陆远程主机_远程登录_03

    执行 chmod +x ./expect1 命令,赋予expect1执行权限后,执行 ./expect1 命令即可登录到centos8.3上(如下图)

编写脚本实现登陆远程主机_centos_04


1.2 变量功能登录

    expect除了上面的基本功能,还可以实现变量方式进行远程登录,通过赋值的形式来完成指令,如脚本中的set ip 10.10.10.153类似于ip=10.10.10.153(如下图)

编写脚本实现登陆远程主机_置位_05

    给予expect2脚本执行权限后,执行即可登录到centos8.3主机上(如下图)

编写脚本实现登陆远程主机_远程登录_06

    在此基础上,我们可以将地址、用户名和mi码设置位未知参数$argv 0、$argv 1和$argv 2,执行脚本时添加上需连接的主机具体信息,以方便同一脚本实现不同主机的登录(如下图)

编写脚本实现登陆远程主机_centos_07


  1. shell脚本登录

    shell脚本登录时,脚本内容与expect2脚本内容大体相同(如下图)

编写脚本实现登陆远程主机_centos_08

    执行 bash ./expect3.sh 命令,即可登录到centos8.3上(如下图)

编写脚本实现登陆远程主机_远程登录_09

    当然我们也可将脚本中的ip、user和password设置位变量$1、$2、和$3,在执行时添加上具体的地址、用户和mi码,这样就可以通过一个脚本去登录不同的主机(如下图)

编写脚本实现登陆远程主机_置位_10

编写脚本实现登陆远程主机_远程登录_11

以上是关于编写脚本实现登陆远程主机的主要内容,如果未能解决你的问题,请参考以下文章

expect脚本远程登陆主机并记录日志

如何在zabbix执行远程主机的脚本或指令

expect批量scp脚本

expect批量scp脚本

第六周作业

Linux远程登陆Windows系统