利用shell的expect实现自动登录服务器 原创 hgditren 2019-01-04 10:43:25 博主文章分类:操作系统 ©著作权 文章标签 shell expect spawn 自动交互 文章分类 运维 ©著作权归作者所有:来自51CTO博客作者hgditren的原创作品,请联系作者获取转载授权,否则将追究法律责任 前言:使用ssh登录内网服务器,每次都要输入以下命令,次数多了就感觉很麻烦。 zrj@zrj:~$ ssh root@192.168.1.9 root@192.168.1.9's password: 现在,我们可以使用Expect实现复杂的交互过程。 Expect是一个用来处理交互的命令。 expect常用的四个命令: spawn 启动新的进程 expect 从进程接收字符串 send 用于向进程发送字符串 interact 允许用户交互 使用expect 1、 安装 zrj@zrj:~$ sudo apt-get install expect 2、获取expect执行路径 zrj@zrj:~$ which expect /usr/bin/expect 3、编写脚本 zrj@zrj:~$ cd ~ zrj@zrj:~$ touch logindev zrj@zrj:~$ vim logindev #!/usr/bin/expect #启动新进程 spawn ssh root@192.168.1.9 #从进程接收字符串 expect "*password:" #向进程发送字符串 send "yourpassword\r" #允许用户交互 interact 保存,并给赋予执行权限 zrj@zrj:~$ chmod +x ./logindev 4、运行脚本 zrj@zrj:~$./logindev 赞 收藏 评论 分享 举报 上一篇:PHP+Swoole+Linux实现进程监控 下一篇:浅析laravel门面原理与实现 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 Expect 自动化运维工具使用指南 目的为了运维人员更好地管理批量机器,特此编写本文档。什么是 ExpectExpect 是基于 Tcl 的相对简单的一个免费的脚本编程工具语言,用来实现自动和交互式任务程序进行通信,无需人工干预。比如:SSH、SCP 等,这些程序都需要人工与其进行交互,Expect 就可以模拟人工交互过程,自动与远端程序进行交互,从而实现自动化运维的目的。Expect 是一个用来实现自动交互功能的软件套件。虽然,使 自动化运维 expect 登录系统演进、便捷登录设计与实现 本文探讨登录认证技术的演进历程,并介绍在终端设备上实现便捷登录的设计与实现方法,以供各位同学参考。 客户端 用户登录 mysql数据库自动备份shell 以下是一个用于实现MySQL数据库自动备份的Shell脚本示例。该脚本包括了备份文件的命名规则、备份时间间隔、数据存储路径以及如何在MySQL服务运行期间进行备份操作。同时,脚本能够处理可能出现的错误情况,并提供相应的日志记录功能。#!/bin/bash# 配置信息DB_USER="your_username" # 数据库用户名DB_PASSWORD="your_password" # 数 数据库 备份文件 mysql expect实现自动登录 从网上看了几个脚本不错,借鉴一下注:set timeout -1代表永不超时点击(此处)折叠或打开#!/bin/shauto_login_ssh(){expect -c "set timeout -1;spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3};expect *assword:*;send -- $1\r;interact;"}a 主机 password 网上 expect 解释器 expect实现ssh自动登录 《mypasswd》文件格式: #注释 name:ip:user:password name:ip:user:password 使用方法: %./login.exp <name> 登陆name指定的服务器 & 自动登录 expect;ssh expect 实现脚本自动登录 expect 实现脚本自动登录spawn 用来实现自动和交互式任务到通信脚本示例:#! /usr/bin/expect -f ///-f 自动给脚本文件加执行权限set timeout 10spawn ssh -l username 192.168.1.1 操作系统 shell脚本通过expect实现自动单边无密登录 最近项目需要实现单边无密登录,去网上搜索了下相关文章,实践之后发现几乎都不能用。于是结合expect的使用方法自行写了一个,通过验证可用。现在总结在这供需要的朋友参考。代码如下:1EXPECT=/usr/bin/expect 1$EXPECT <<EOF 2spawn ssh-keygen -t rsa 3expect "*ssh/id_rsa*" { 4 send java 使用expect实现shell自动交互 shell脚本需要交互的地方可以使用here文档是实现,但是有些命令却需要用户手动去就交互如passwd、scp对自动部署免去用户交互很痛苦,expect能很好的解决这类问题。expect的核心是spawn expect send setspawn 调用要执行的命令expect 等待命令提示信息的出现,也就是捕捉用户输入的提示:send 发送需要交互的值,替代了用户手动输入内容set 设置变量值i 使用expect实现shell自动交互 expect自动登录 expect是一个用来处理交互的命令,可通过expect实现ssh自动登录,ftp自动登录,不需要手动输入密码。 1. scp传输文件#将 ssh自动登录 scp自动拷贝 expect 自动登录 手动输入 自动登录多个IDC机房(expect+shell) 我的博客已迁移到xdoujiang.com请去那边和我交流环境说明:不能使用root直接登录 需要使用普通用户登录后切换root 也不能使用免秘钥登录(公司规定)使用方法:chmod +x login./login ip的后2个比如./login 30.30(这个属于天津网段 那自然就使用天津网段的密码了)效果图#!/bin/bash#------------------------------ expect 使用expect实现自动2步登录 以前的公司,由于机器太多太多,使用了跳板机。it觉得仅证书系统不够安全,所以开启了二次验证。也就是每次登陆,都要Google Authenticator中的动态令牌。但我不想每次登陆机器都输入这个动态密码。expect命令可以实现自动交互式任务,自动输入一些信息,无需人为干预,可以很方便的完成自动登录的功能。expect基本有以下几个命令:expect 从进程接收字符串,判断后可以执行命令spa expect linux中使用expect实现自动登录 在实际生产使用中,比如执行批量操作时,我们不想创建ssh认证,需要使用到密码登录或者链接,此时可以使用expect来操作自动添加password:在centos系统上expect默认是没有安装的,所以首先应先安装expect:yum install expect -y创建expect脚本:[root@localhost script]# cat ssh_203.exp linux 密码 认证 自动互信脚本shell/expect expect expect 互信 Linux Shell自动交互(expect) Linux Shell自动交互(expect)su rootyum install -y expect---------------------------vi test.sh----------------------------------#!/usr/b: " send... shell 运维 Shell linux expect, spawn自动登录 今天写一个脚本,需要与终端输出交互,学习着使用了简单的spawn与expect,感觉很方便,记录一下。1. 首先要保证linux server上安装了expect,我自己的服务器跑的是suse 10.2,比较老的版本,默认没有安装expect,下了个rpm包装上先。(现在外面跑得suse enterprise基本都是11或者12的,看来要赶紧升级了,不然下个 linux expect spawn自动登录 shell实现ftp自动登录 ftp -i -n -v <<EOF >logopen IPuser "user_name" user_passwordasciiget file_nameput file_nameEOF -i 参数:关闭多文件传输中的交互式提示(使用mput/mget)-n 参数:阻止在起始连接中的自动登录,否则ft shell ftp Shell - 通过expect工具实现脚本的自动交互 1 安装expect工具expect是建立在tcl基础上的一个自动化交互套件, 在一些需要交互输入指令的场景下, 可通过脚本设置自动进行交互通信. 其交互流程是:spawn启动指定进程 -> expect获取指定关键字 -> send想指定进程发送指定指令 -> 执行完成, 退出.由于expect是基于tcl的, 所以需要确保系统中安装了tcl:# 检查是否安装了tcl:[ro Shell perl的expect模块实现自动输入密码登录 1.安装Expect模块cpan>install Expect 2.脚本如下:#!/usr/bin/perl -wuse strict;use Expect;#passwd.txt格式如下:#host port user passif(@ARGV ! perl expect shell脚本无密码登录 expect使用 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了。 从网上查到使用expect可以,简单研究了一下,效果不错。 系统:CentOS 6.3 因为我的操作系统没有安装expect,所以直接"yum -y scp不输密码 ssh不输密码 shel linux expect自动登录ssh,ftp expect是一种能够按照脚本内容里面设定的方式与交互式程序进行“会话”的程序。根据脚本内容,Expect可以知道程序会提示或反馈什么内容以及 什么是正确的应答。它是一种可以提供“分支和嵌套结构”来引导程序流程的解释型脚本语言。shell功能很强大,但是不能实现有交互功能的多机器之前的操作,例如ssh和ftp.而expect可以帮助我们来实现。一,安装expectyum install& linux 密码 服务器 程序 expect