`
jxxms
  • 浏览: 104477 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[linux服务器]使用expect自动登录

阅读更多

使用expect自动登录

一,什么是expect?
   在做系统管理时,我们很多时候需要输入密码,例如:连接 ssh,连接ftp,
   那么如何能做到不输入密码吗?
   我们需要有一个工具,能代替我们实现与终端的交互,
   那么,就是它:expect,管理员的最好的朋友之一
   它能够代替我们实现与终端的交互,我们不必再守候在电脑旁边输入密码,
   或是根据系统的输出再运行相应的命令,
   这些都可以由expect代替我们来完成

   说明:expect到底是什么?
   expect是一种脚本语言,使用起来非常简单,我们看后面的例子即可以了解到了

三,安装expect

   备注:因为expect是基于tcl的,所以需要你的系统中安装有tcl
        如何检查?
        [root@dev ~]# whereis tcl
        tcl: /usr/lib/tcl8.4 /usr/share/tcl8.4
        如果看不到结果,请先安装tcl
   安装,
   [root@dev ~]# yum install expect
   也可以从http://rpm.pbone.net下载for相应发行版的rpm包

四,使用expect自动登录的例子
1,程序例子的内容 :
  先做功能 上的说明
  此程序ssh登录到作为参数传递过来的ip地址上
  然后执行: df -h
          free -m
          uptime
  来检查系统的情况


[root@dev ~]# cat monitor_auto
#!/usr/bin/expect -f

#-------------------------------------------------- about us
# product: monitorone
# Author: liuhongdi <hongdi.liu@chinafotopress.com>
# Last Modified: 2008-05-13
# version: 0.3.2
# user:this script will help you to monitor many linux(unix) machine
# license: this script is based GPL

#-------------------------------------------------- set the variable,you can modify the value

set loginuser "root"                  
set loginpass {passwordonthishost}

set ipaddr [lrange $argv 0 0]   
set timeout 300
set cmd_prompt "]#|~]?"

#-------------------------------------------------- login by ssh
spawn ssh $loginuser@$ipaddr
set timeout 300
 expect {
     -re "Are you sure you want to continue connecting (yes/no)?" {
         send "yes\r"
     } -re "assword:" {
         send "$loginpass\r"
     } -re "Permission denied, please try again." {
        exit
     } -re "Connection refused" {
         exit
     } timeout {
        exit
     } eof {
        exit
     }
}

expect {
  -re "assword:" {
     send "$loginpass\r"
  }
  -re $cmd_prompt {
     send "\r"
  }
}

#---------------------------------------------------- now,we do some commands
exec sleep 1
expect {
  -re $cmd_prompt {
     send "df -h\r"
  }
}

exec sleep 1
expect {
  -re $cmd_prompt {
     send "free -m\r"
  }
}

exec sleep 1
expect {
  -re $cmd_prompt {
     send "uptime\r"
  }
}
exec sleep 1


#--------------------------------------------------
expect {
  -re $cmd_prompt {
     send "exit\r"
  }
}


exit
#interact

2,程序 运行的显示结果

[root@dev ~]# ./monitor_auto 209.209.94.107
spawn ssh root@209.209.94.107
root@209.209.94.107's password:
Last login: Sun Feb 15 01:42:39 2009 from 201.103.105.49

[root@ws ~]#
[root@ws ~]# df -h
Filesystem            ÈÝ  ÒÑÓÃ ¿ÉÓÃ ÒÑÓÃ% ¹ÒÔصã
/dev/mapper/VolGroup00-LogVol00
                      133G   72G   55G  57% /
/dev/sda1              99M   13M   82M  14% /boot
none                 1014M     0 1014M   0% /dev/shm
209.209.94.109:/www/pics
                      5.9T  5.6T  138G  98% /bank/bank1
[root@ws ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          2026       1955         71          0         72       1621
-/+ buffers/cache:        261       1764
Swap:         1983         68       1915
[root@ws ~]# uptime
 01:48:00 up 561 days,  8:53,  2 users,  load average: 0.13, 0.09, 0.07
[root@ws ~]# [root@dev ~]#


四,对此程序的详细说明:
   1,set loginuser "root"
     set用来定义变量,定义之后的代码中可以使用所定义的变量
     使用时注意需添加$符号
     使用时的例子:  spawn ssh $loginuser@$ipaddr

分享到:
评论

相关推荐

    linux expect安装及expect,tcl安装包

    工作中需要对几十台服务器做互信,无意中发现expect命令,研究一番。 expect命令在自动交互中很好用。 压缩包包含安装步骤,安装包,以及 自动互信脚本。

    批量获取linux服务器厂商/cpu/内存/磁盘/网卡等信息(适用于centos7系x86和arm架构)

    无需做免密,通过expect利用ssh批量获取linux服务器厂商/cpu/内存/磁盘/网卡等信息 1、设置数组变量,并指定服务器ip列表 #需要检查的服务器列表 IP@@ssh端口@@用户名@@密码 serverInfo=( 192.168.195.129@@22@@...

    Linux经典脚本expect的示例及基本用法

    正常发送文件或自动化登录远程机器,需要与机器互动。但有时有批量发送,或自动化发送的需要(如定时下载到一些数据,发送数据文件到指定机器进行脚本处理),此时,需要能自动发送文件,而不是各种输入。由此,...

    linux中expect的介绍与使用示例

    而Expect就使用来实现这种功能的工具。 Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年 开始编写Expect时对Expect做有如下定义:Expect是一个...

    用expect实现的自动登录到多台服务器的shell脚本

    /usr/bin/expect -fset ipaddress [lindex $argv 0]set passwd [lindex $argv 1]set timeout 30spawn ssh root@$ipaddress#expect “yes/no”#send “yesr”expect “password:”send “$passwdr”expect “]*”send...

    Shell脚本实现自动输入密码登录服务器

    主要介绍了Shell脚本实现自动输入密码登录服务器,本文使用expect来实现这个需求,讲解了expect的安装及使用脚本,需要的朋友可以参考下

    expect中文教程

    接触Expect是迫不得已。... 使用Perl一样可以实现这样的功能,然而,Expect做的更出色,而且除支持Unix/Linux平台外,它还支持Windows 平台,它就是为系统管理和软件测试方面的自动交互类需求而产生的:

    shell脚本无密码登录 expect的使用方法详解

    shell脚本无密码登录 expect的使用方法详解 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了。 从网上查到使用...

    expect命令在linux下实现批量ssh免密

    有时候我们需要批量发送ssh命令给服务器,但是有可能有些服务器是新加入的,还没有配置ssh免密,这个时候就会提示我们输入yes/no 或者password等,expect脚本命令就是用于在提示这些的时候,自动为我们输入相应的...

    Windows和linux批量部署脚本

    本资源包含两部分,Windows下基于批处理文件的自动部署脚本和Linux下基于expect脚本的自动部署脚本。主要用于大量服务器部署相同的脚本时,减轻人的工作量同时避免由于人为操作带来的各类错误。其中linux脚本需要...

    在Linux下灵活使用expect脚本的小窍门

    对于喜爱自动化的Linux系统管理员而言,一定是用过expect这个命令行工具。Expect 是由 Don Libes 基于 Tcl 语言开发的,并被广泛应用于交互式操作和自动化测试的场景之中,它尤其适用于需要对多台服务器执行相同操作...

    init_system_hem.rar_LINUX远程自动_php memcache_xcache

    通过expect 实现自动登陆远程linux服务器安装 nginx php mysql memcache xcache chkrootkit 等软件

    RED HAT LINUX 6大全

    5.3.2 使用kdm登录 68 5.3.3 KDE桌面特性 69 5.3.4 执行基本的桌面动作 70 5.3.5 使用桌面面板 70 5.3.6 编辑KDE面板菜单 71 5.3.7 使用kfm文件管理器 71 5.4 使用KDE Control Center配置KDE 71 5.4.1 使用显示管理...

    SigmationTF自动化测试教程

    识、交换机和终端服务器等网络设备的使用经验,熟悉Windows和Linux操作 系统的管理与Shell编程知识,并且熟练掌握ITCL与EXPECT脚本语言。 本文适合SigmationTF自动化测试工程师课程的进修或培训使用,对本文 内容...

    shell结合expect写的批量scp脚本工具

    expect用于自动化地执行linux环境下的命令行交互任务,例如scp、ssh之类需要用户手动输入密码然后确认的任务。有了这个工具,定义在scp过程中可能遇到的情况,然后编写相应的处理语句,就可以自动地完成scp操作了。 ...

    python pexpect ssh 远程登录服务器的方法

    如果没有,linux系统输入 easy_install pexpect便可自动安装。 测试代码,连接127.0.0.1 下面是我手动连接127.0.0.1, 发现只有在首次使用ssh连接127.0.0.1时,需要输入yes or no ,而后再次使用ssh ,则不需要再次...

    Shell脚本实现监控rsync数据是否传输完

    今天有台服务器a要把网站程序全部传输到另外一台服务器b上去,但离下班时间就只有1个小时了,为了准时下班,简单写了个shell脚本来监控是否有传输完,我先在服务器a上看了下网站程序总大小为12G,用du -sm查看也就是11517...

    中文第一版-UNIX环境高级编程

    19.2.1 网络登录服务器 477 19.2.2 script程序 478 19.2.3 expect程序 479 19.2.4 运行协同进程 479 19.2.5 观看长时间运行程序的输出 479 19.3 打开伪终端设备 480 19.3.1 SVR4 481 19.3.2 4.3+BSD 482 19.4 pty_...

    UNIX环境高级编程第二版

    19.2.1 网络登录服务器 477 19.2.2 script程序 478 19.2.3 expect程序 479 19.2.4 运行协同进程 479 19.2.5 观看长时间运行程序的输出 479 19.3 打开伪终端设备 480 19.3.1 SVR4 481 19.3.2 4.3+BSD 482 19.4 pty_...

Global site tag (gtag.js) - Google Analytics