我有一点,我似乎无法找出一个困惑,我敢肯定,这很容易实现自动化install.sh脚本..使用expect脚本
我有一个外部shell脚本,我们将其称为“install.sh”,用于安装我们公司开发的一款软件。我想使用expect(使用外部参数)自动执行install.sh过程,因为在输出字符串上对匹配进行模式匹配以及将一串参数传递给期望脚本的数组或参数非常容易。
不幸的是,网上的许多例子都是针对“scp”或“ftp”的,这些对我来说都不是很有趣,因为我试图自动化一个简单的安装脚本,而不是那些交互式shell, “脚本”。
下面是一个简单的例子想到我试图创建脚本:
# !/usr/bin/expect
# passed arguments
set domPassw [lindex $argv 1]
set joinDomain [lindex $argv 2]
set cdcVersion [lindex $argv 3]
set domUser [lindex $argv 4]
# cd over
cd /Users/wqcoleman/Desktop/suite-mac10.6/;
# start install
spawn ./install.sh
# first match
expect "Install the 5.1.0 package? (Q|Y|N) [Y]:"
send "Y\r"
我敢肯定,我可以弄巧在这里和bash脚本内做到这一点,但是这是更难,因为就我而言,我宁愿有一个简单的迭代脚本来“匹配”输出并发送输入,这对我来说似乎更简单。
我有两个基本问题。
- 当上面运行时,它似乎不会“激发” ./install.sh脚本。什么也没有?没什么可比的?输出的内容不包括 。
- 我需要以root身份运行./install.sh脚本,并且当我最初启动这个时,我会产生一些 “高架”启动,它不会,所以我不知道该怎么办这里。
我要运行是这样的:
#!/bin/bash
# Ask for the administrator password upfront
sudo -v
# Keep-alive: update existing `sudo` time stamp until `.update` has finished
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &
# cd over
cd /Users/wqcoleman/Desktop/suite-mac10.6/;
# start install
spawn ./install.sh
,然后擀成期待,但没有在所有的工作..所以我不知道从哪里开始,写bash脚本和通话期望里面?或者写一个期望脚本并在那里用提升的提示调用install.sh?
任何建议将是最有帮助的。
不确定问题出在哪。希望与程序谈判,不管是ftp还是scp,都没有关系。 – pn8830
它似乎没有“产卵”./install.sh脚本。它只是坐在那里。另外,我似乎无法弄清楚如何让./install.sh脚本在一个期望脚本中作为root运行。 –
什么是您的操作系统? – pn8830