Llinux下的expect的简单用法及举例

1、使用expect前,需要先安装两个rpm包,下载:

免费下载地址在

用户名与密码都是

具体下载目录在 /2012年资料/7月/27日/Llinux下的expect的简单用法及举例/

# rpm -ihv expect-5.43.0-8.el5.i386.rpm# rpm -ihv expect-devel-5.43.0-8.el5.i386.rpm

2、使用脚本文件的例子–实现自动输密码#!/usr/bin/expect -fset password 123456#downloadspawn scp root@192.168.1.218:/root/a.wmv /home/yangyz/set timeout 300 expect “root@192.168.1.218’s password:”set timeout 300 send “$password\r”set timeout 300 send “exit\r”expect eof

3、在sh脚本中嵌入expect的例子–通过连上一个公网的服务器再转跳到一个内网的服务器上,,用脚本实现不用输密码,直接使用./goto.sh servername#!/bin/bashpassmsmallq10=”a”passzhsh=”a”passfcwr=”b”passwapfx=”c”passadfx=”d”

ip1=”200.100.10.10″ip2=”10.100.100.70″ip3=”10.100.100.60″ip4=”10.100.100.10″ip5=”10.100.100.20″

case $1 in “zhsh”) passstr=$passzhsh ipstr=$ip2 ;;”fcwr”) passstr=$passfcwr ipstr=$ip3 ;;”wapfx”) passstr=$passwapfx ipstr=$ip4 ;;”adfx”) passstr=$passadfx ipstr=$ip5 ;;*) echo “The parameter $1 isn’t exist”exit 0 ;;esac

command1=”ssh -l m_smallq -p 36000 $ip1″command2=”ssh -l mqq -p 36000 $ipstr”

expect -c ” set timeout 60; spawn $command1; expect { \”221.130.15.10’s password:\” {send \”$passmsmallq10\r\”; exp_continue} \”m_smallq\” {send \”$command2\r\”; exp_continue} \”mqq’s password:\” {send \”$passstr\r\”;interact} } “

对上面例子的expect的解说expect -c “…” –里面输入命令expect {…} –里面的多行记录,从上向下扫描匹配,谁先匹配谁先处理。

4、ssh到另一台机子执行df -h后退出,要点是send后面可以跟多个命令,通过\r来分行成多个命令#!/bin/baship1=”183.62.178.191″command1=”ssh -l root -p 14322 $ip1″

expect -c ” spawn $command1; expect { \”183.62.178.191’s password:\” {send \”aa\r\”; exp_continue} \”root@\” {send \”df -h\r exit\r\”; exp_continue} } ”

人之所以能,是相信能。

Llinux下的expect的简单用法及举例

相关文章:

你感兴趣的文章:

标签云: