利用shell的expect实现自动登录服务器

前言:使用ssh登录内网服务器,每次都要输入以下命令,次数多了就感觉很麻烦。

[email protected]:~$ ssh [email protected]
[email protected]‘s password:

现在,我们可以使用Expect实现复杂的交互过程。

Expect是一个用来处理交互的命令。

expect常用的四个命令:

  1. spawn 启动新的进程
  2. expect 从进程接收字符串
  3. send 用于向进程发送字符串
  4. interact 允许用户交互

使用expect

1、 安装
[email protected]:~$ sudo apt-get install expect
2、获取expect执行路径
[email protected]:~$ which expect
/usr/bin/expect
3、编写脚本
[email protected]:~$ cd ~
[email protected]:~$ touch logindev
[email protected]:~$ vim logindev

#!/usr/bin/expect
#启动新进程
spawn ssh [email protected]
#从进程接收字符串
expect "*password:"
#向进程发送字符串
send "yourpassword\r"
#允许用户交互
interact

保存,并给赋予执行权限

[email protected]:~$ chmod +x ./logindev
4、运行脚本
[email protected]:~$./logindev

原文地址:http://blog.51cto.com/phpme/2338610

时间: 2024-08-29 00:35:29

利用shell的expect实现自动登录服务器的相关文章

shell脚本实现ssh自动登录远程服务器示例

本文转载自 懒惰的肥兔 :http://www.xuanhao360.com/linux-expects/ shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh [email protected] expect "*password:" send "123\r" expect "*#" interact Expect是一个用来处理交互的命令.借助Expect,我们可以将交互过程写在一个脚本上,使

用了一天的时间,linux下expect实现ssh自动登录服务器记,鄙视下网上各种抄来抄去残段子

因为要对客户方的快30个项目进行特别有顺序的重启,所以不得不想办法写个脚本,网上看了不少段子.真是残缺的可以.没有一段是可以正常运行的.我来按顺序记录一下 脚本的本身 使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ############################################## #!/usr/bin/expect set timeo

Linux expect实现自动登录

expect expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令.当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令.但当不能使用密钥验证的时候,我们就没有办法了.所以,这时候只要知道对方机器的账号和密码就可以通过expect脚本实现登录和远程命令. 引言 目前在公司是一人一台虚拟机,大多数工作都要在虚拟机上完成,为此每天要执行很多次[ssh [email protected]]指令登录虚拟机:有很多方式解决这个问题,如使用xshell.secureCRT

shell 密码输入不显示,Shell输出内容不显示密码,Shell实现有密码自动登录sshpass 应用实践

在很多实践项目中,我们经常会通过SSH来进行认证,如通过SSH拷贝文件,虽然我们可以使用公钥与私钥实现ssh 无密码登录,在不同的服务器上又需要配对相应的密钥,切换用户麻烦等问题,在一些需要交互但会涉及到批量处理的时候,通过shell 密码输入不显示,Shell输出内容不显示密码,Shell实现有密码自动登录会大大的提高工作效率 #! /bin/bash ############################################## #Author:                

使用expect实现自动登录的脚本

使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ############################################## #!/usr/bin/expect set timeout 30 spawn ssh -l username 192.168.1.1 expect "password:" send "ispass\r&

mac 安装brew mac安装expect mac一键登录服务器脚本

mac 安装brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" mac安装expect(需要先安装brew,没有安装的话看上边) brew install expect mac一键登录服务器脚本 set user "zhaohh" set host "123.126.105.34" set p

expect实现自动登录

自动登录主机(ssh) 建脚本item2login.sh,包含如下内容 #!/usr/bin/expect set timeout 30 spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2] expect { "(yes/no)?" {send "yes\n";exp_continue} "password:" {send "[lindex $argv 3]\n&

Shell结合Expect实现自动输入密码

Shell结合Expect自动输入密码示例 1 #!/bin/bash 2 3 cd /data/live 4 5 /usr/bin/expect <<-EOF 6 spawn git clone "ssh://xxxxxxxxxxxx" 7 expect "*passphrase*" 8 send "passwordhere\n" 9 expect eof 10 EOF 11 12 time=`/bin/date "+%Y

ssh跳板登陆太麻烦,使用expect每次自动登录 利用expect 模拟键盘动作,在闲置时间之内模拟地给个键盘响应

#!/usr/bin/expect -f #设置超时时间 set timeout 3 #这里设置了跳板机的密码 set password "你的跳板机密码" #连接跳板机 spawn ssh 用户名@跳板机IP #如果返回的内容包含*yes/no*,发送yes expect "*yes/no*" {send "yes\n"} #如果返回的内容包含"*password*",发送你设置的密码+\r(PS.这里的\r一定要加,是回车