shell写自动安装脚本自动读取license和自动输入回车
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell写自动安装脚本自动读取license和自动输入回车相关的知识,希望对你有一定的参考价值。
最近比较闲,在公司写了一个centreon+nagios平台源码全自动安装脚本(因为公司不能连外网,公司yum源很多东西不全,所以只能采取源码安装),其中写到安装centreon时候,执行./install -i 会需要回车读取license,而需要阅读内容比较多,需要多次按下空格键才能读完,以下使用expect来实现此部分,如果各位有比较好的方法,麻烦指点,相互学习,因为脚本已经使用,所以不便公开,这里就简单举个例子,之后应该会用python写一些开源的东西,也请大家多多指点。
1、安装expect
yum -y install expect*
2、expect和.install -i交互过程,以下脚本命名为interactive.sh
#!/usr/bin/expect set timeout 45 #有些命令需要执行比较久,这里设置45以避免expect执行命令过程会退出 set rrdspath [lindex $argv 0] #传参,下面会再举例说明 set pearpath [lindex $argv 1] spawn ./install.sh -i #需要交互的命令 expect "Press enter to continue." #有出现的字符串 send "\n" #出现上面字符串之后发送回车 expect "modification follow." #此为读取license底部出现的行 send " " #发送多个空格 send " " send " " send " " send " " expect "default to *:" #直到此处,要求输入选择 send "y\r" #自动输入 中间还有很多略过...... expect eof
2.1 执行expect传参实例
以下用smbpasswd 批量建立用户来举例
bash脚本
#!/bin/bash i=1 for((i=1;i<=1000;i++)) do ./sambaname user${i} [email protected]${i} #这里就是传入参数了 done
下面脚本命名为./samaname
#!/usr/bin/expect -f set username [lindex $argv 0] #和上面类似 set password [lindex $argv 1] spawn smbpasswd -a $username expect "*password:" send "$password\n" #注意这里发送的是上面的username变量 expect "*password:" send "$password\n" expect eof
两者放在同个目录下面,然后chmod a+x 改变执行权限,第二个脚本去调用第一个。
本文出自 “随笔记” 博客,请务必保留此出处http://yaonet.blog.51cto.com/5933544/1755079
以上是关于shell写自动安装脚本自动读取license和自动输入回车的主要内容,如果未能解决你的问题,请参考以下文章