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} p@ssw0rd${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 改变执行权限,第二个脚本去调用第一个。

你可能感兴趣的:(shell,license,自动阅读)