博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小型自动化运维--expect脚本之传递函数
阅读量:5979 次
发布时间:2019-06-20

本文共 920 字,大约阅读时间需要 3 分钟。

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

[root@shiyanji ~]# 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 $user@$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,截图如下:

     本文转自品鉴初心51CTO博客,原文链接:http://blog.51cto.com/wutengfei/1918763,如需转载请自行联系原作者

你可能感兴趣的文章
windows8英文语言包下载地址
查看>>
SFTP免密码登录原理
查看>>
博客内容更新目录
查看>>
在Android中查看和管理sqlite数据库
查看>>
dede首页调用自定义字段
查看>>
input聚焦事件
查看>>
c#王者归来,秒掉java时日不多
查看>>
Servlet基本_WAR、デプロイ
查看>>
使用python处理selenium中的css_selector定位元素的模糊匹配问题
查看>>
自我介绍
查看>>
JavaScript访问对象的属性和方法
查看>>
MEF 编程指南(八):过滤目录
查看>>
Java线程池使用说明
查看>>
centos出现-bash: /usr/bin/php: 没有那个文件或目录解决方法
查看>>
【转载】2013考驾照的博友,不转走后悔死你【组图】
查看>>
织梦企业标签整理
查看>>
(对对碰)软工结对作业
查看>>
UITableView .grouped 类型去除顶部间距
查看>>
CentOS7 64位下MySQL5.7安装与配置(YUM)
查看>>
终端无记录命令方法
查看>>