使用expect自动登录与SSH密钥拷贝

需积分: 10 3 下载量 36 浏览量 更新于2024-09-02 收藏 353KB PDF 举报
"该文档是关于使用expect工具进行自动化登录的实战指南,主要涉及expect的安装、使用,以及如何结合shell脚本实现跨服务器的命令操作。expect是一种强大的自动化工具,能够模拟用户交互,尤其在处理需要输入密码或确认交互的场景中非常有用。文档中还提供了具体的ssh非交互拷贝密钥和自动登录harbor的示例。" 在自动化运维领域,expect工具扮演着重要的角色。它允许编写脚本去自动化那些通常需要人工交互的任务,如SSH登录、文件传输等。下面将详细讲解expect的使用及其在自动登录过程中的应用。 1、安装expect 在Linux系统中,expect可以通过包管理器进行安装。例如,在Red Hat或CentOS系统中,可以使用`yum install expect -y`命令来安装。安装完成后,可通过`which expect`命令查找expect的可执行文件位置,确保其已加入PATH环境变量以便后续使用。 2、expect非交互式拷贝SSH密钥 SSH密钥对的拷贝通常是手动进行的,但使用expect可以实现自动化。在提供的示例中,创建一个名为`expect.sh`或`expect.py`的脚本,其中包含expect命令行语法。`spawn ssh -l`用于启动一个新的SSH会话,`ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.92`则是拷贝本地的公钥到远程主机。`expect`语句用于等待特定的提示(如密码提示),然后`send`发送相应的输入(在这里是密码)。最后,`interact`允许expect脚本接管交互,直到会话结束。 3、执行expect脚本 脚本创建完成后,需赋予执行权限,如`chmod +x expect.sh`,然后通过`./expect.sh`来执行。需要注意的是,执行方式的正确性,避免直接使用`sh expect.sh`或尝试用Python执行,因为这可能导致错误或不兼容问题。 4、expect自动登录harbor 在另一个示例中,expect被用来自动登录私有Harbor仓库。创建的`a.sh`脚本中,`spawn docker login 192.168.0.73:5000`启动docker登录过程,然后`expect`等待用户名和密码提示,分别发送预先设定的用户名和密码。 通过这种方式,expect可以极大地提高运维效率,减少人工干预,特别是在需要频繁登录或拷贝密钥的场景下。它也可以结合shell脚本,扩展更多的自动化任务,如批量部署、系统维护等。熟练掌握expect工具是提升IT运维自动化水平的关键技能之一。