【发布时间】:2014-11-21 00:28:48
【问题描述】:
问题:我正在尝试创建一组脚本,提示用户输入 IP/主机名和密码(我都可以访问),然后通过 SSH 连接到 VM。第二个脚本运行一组命令来为具有各种更新和服务的环境建立基线。
在本地运行时,此脚本可以正常工作。它显示主机名并要求验证以在该环境中运行更新。
-----------------baseline.sh
#!/bin/bash
#filename: baseline.sh
echo "Are you sure you want to run your script on $(hostname -f)?"
OPTIONS="yes no"
select opt in $OPTIONS; do
if [ "$opt" = "yes" ]; then
echo Running Script...
#do script things
exit
elif [ "$opt" = "no" ]; then
echo Canceling Run...
exit
else
echo Please Input Either the # 1 or 2.
fi
done
这是输出:
is-mbp-jsmith:Setting Up Dev Env's jsmith $ sh baseline.sh
Are you sure you want to run your script on is-mbp-jsmith.somecompany.com?
1) yes
2) no
#? 1
Running Script...
此脚本在我的本地机器上按预期工作
-------------------------------------------修改DevEnv.sh
这是我用来将上面的脚本通过管道传输到 VM 中的脚本。
#!/bin/bash
#filename: modifyDevEnv.sh
echo Enter a hostname/IP for the Dev Environment to connect to.
read HOST
ssh $HOST -l root 'bash -s' < baseline.sh
这是我运行此脚本时得到的输出:
is-mbp-jsmith:Setting Up Dev Env's jsmith $ sh modifyDevEnv.sh
Enter a hostname/IP for the Dev Environment to connect to.
10.58.88.53
root@10.58.88.53's password:
Are you sure you want to run your script on vm-jsmith.somecompany.com?
1) yes
2) no
#? 1) yes
2) no
#? is-mbp-jsmith:Setting Up Dev Env's jsmith $
当通过 ssh 运行时,脚本看起来像是运行了两次选项命令然后立即结束。它永远不会允许用户输入是/否的选项
我不知道它是否与要求脚本不喜欢的用户通过 ssh 输入有关,但这个问题让我很困惑。我对 Bash 相当陌生(我正在尝试的第一个实际脚本),但我没有发现语法有任何问题。有什么我想念的吗?
【问题讨论】: