小型自动化运维--expect脚本之传递函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小型自动化运维--expect脚本之传递函数相关的知识,希望对你有一定的参考价值。

小型自动化运维--expect脚本之传递函数



[[email protected] ~]# vim 3.expect


#!/usr/bin/expect

set user [lindex $argv 0]

set host [lindex $argv 1]

set passwd "wtf"

set cm [lindex $argv 2]

spawn ssh [email protected]$host

expect {

"yes/no" { send "yes\r"}

"password:" { send "$passwd\r" }

}

expect "]*"

send "$cm\r"

expect "]*"

send "exit\r"

expect eof


对文件3.expect授予执行权限

# chmod +x 3.expect


执行3.expect

# ./3.expect root 192.168.8.103 “cd /tmp;ls”,截图如下:

技术分享

# ./3.expect root 192.168.8.103 “w”,截图如下:

技术分享


注:

(1)shell 中的变量是 $0 $1,而 expect 里面的变量是 $argv 0,$argv 1。expect 脚本中的参数比 shell 中的复杂一些,而且是从数字 0 开始,[lindex #argv 0] 表示第一个参数,[lindex $argv 1] 表示第二个参数。

(2)结束符有 expect eof 和 interact,二者取一即可。


扩展:

可以设置把 passwd 作为一个参数,这样就不存在被别人窃取密码的情况。

set user [lindex $argv 0]

set host [lindex $argv 1]

set passwd [lindex $argv 3]

set cm [lindex $argv 2]

# ./3.expect root 192.168.8.103 “cd /tmp;ls” wtf,截图如下:

技术分享



本文出自 “圣骑士控魔之手” 博客,请务必保留此出处http://wutengfei.blog.51cto.com/10942117/1918763

以上是关于小型自动化运维--expect脚本之传递函数的主要内容,如果未能解决你的问题,请参考以下文章

小型自动化运维--expect脚本之指定ip,指定文件进行同步操作

小型自动化运维--expect脚本V2版

小型自动化运维--expect脚本

小型自动化运维--expect入门知识

自动化运维脚本语言之expect实践学习

Shell脚本之Expect免交互