第一次登录读取isuue

问题描述:

我想执行脚本,基本上询问用户一个问题,并根据用户配置定制应用程序的值的输入。问题是它得到执行,但不会提示用户输入并使用默认值。第一次登录读取isuue

我呼吁脚本root用户的.bashrc如下

if [ -e /opt/services_vm/autoUpgrade.sh ]; 
then 
    /opt/services_vm/autoUpgrade.sh 
fi 

自动升级脚本看起来如下

#!/bin/bash 

    while true; do 
      read -p "Do you want to enable automatic upgrade [Y|y - Yes] [N|n - No] [Yes] ?" yn 
      case $yn in 
        [Yy] | "") sed -i "s#<autoupgrade-enabled>OFF<\/autoupgrade-enabled>#<autoupgrade-enabled>ON<\/autoupgrade-enabled>#g" /opt/avaya/SAL/gateway/SpiritAgent/config/agent/SPIRITAgent_1_0_PDComponentConfig.xml; 
           rm -rf /opt/services_vm/autoUpgrade.sh 
           exit;; 
        [Nn]) rm -rf /opt/services_vm/autoUpgrade.sh 
          exit;; 
        *) echo "Please answer yes or no.";; 
      esac 
    done 

的问题是,对于输入和第一个case语句的不提示用户越来越默认执行。我可以在日志中看到。另外root用户必须根据我所做的配置在第一次尝试时更改pass。它迫使用户更改通过并在脚本下执行,但采取默认输入而不是提示给用户。

我试过你的脚本,如下所示,把它放在.bashrc中,它按预期工作。它提示并且答案被采取行动(它回应正确的词)。先试一试。我觉得这个问题不是来自你的脚本。

#!/bin/bash 

while true; do 
     read -p "Do you want to enable automatic upgrade [Y|y - Yes] [N|n - No] [Yes] ?" yn 
     case $yn in 
       [Yy] | "") echo YES; 
          exit;; 
       [Nn]) echo NO; 
         exit;; 
       *) echo "Please answer yes or no.";; 
     esac 
done 
+0

它工作,如果我把它手动。但我希望它只能在第一次root登录时执行,因为这个原因在脚本中编写了自我删除语句。其虚拟机,其中我为美分操作系统创建映像,并将其部署到计算机上。我已经配置root用户在第一次登录时更改密码,并希望在此之后执行脚本。 – user530158

+0

由于脚本调用来自.bashrc文件,我期待脚本在root登录后执行。不知道在什么时候执行脚本。 – user530158

由于它是自我删除脚本,它在第一次root登录之前被删除。不知道如何执行root .bashrc,可能来自其他脚本。我的错误印象是它没有被第一个root用户登录。 谢谢Kambiz。