2017-10-05 64 views
0

我有一个bash脚本“domain-ssl-status.sh”。我需要有两个参数的脚本,这样我就可以通过以下方式运行该脚本:Bash脚本传递两个参数来获取ssl的状态

./domain-ssl-status.sh cname.domain.com状态|未取得|得到|错误

域名,并状态是我的2个参数

则domainName = $ 1和状态= $ 2

我曾尝试使用CASE语句,创建status_map,但没有运气!我在这里也看到了其他提示,但我似乎从未工作。我的SQL语句包括SELECT * FROM DomainSSL WHERE domainName ='cname.domain.com',我仍然坚持。

+0

让我们看看你的脚本结构的一个例子。 –

+0

编辑帖子,以便格式化它。 ;!) –

+0

#/斌/庆典 则domainName = $ 1 状态= $ 16 而[[$#-gt 0]];在 状态下执行 “$ 1”的情况) mssql -f csv -c〜/ applications/mssql/mssql.json -q“SELECT * FROM DomainSSL WHERE domainName ='$ 1'” ;; *) 回声 “无效参数:$ 1” 出口1个 ESAC 转变 做 回声 “SELECT * FROM域名型其中DomainName = '$ 1' '$ 2'” – jphil1971

回答

0

粗糙的传球在重写 -

#!/bin/bash 
domainName=$1 
status=$2 
echo "Verifying domain" 
case status in 
$status) ping -c 1 $domainName || { 
      echo "Cannot ping $domainName" >&2 
      exit 1 
     } ;; 
*) echo "Invalid argument '$status'" >&2 
    exit 1 ;; 
esac 

sql="SELECT * FROM DomainSSL WHERE domainName='$domainName'" 
mssql -f csv -c ~/applications/mssql/mssql.json -q "$sql" # mark here 
rc=$? 
if ((rc)) # nonzero 
then echo "FAIL: rc $rc on [$sql]" >&2 
else echo "SUCCESS: $sql" 
fi 

您也可能想尝试保存输出和错误供以后分析。 从上方# mark重写,

mssql -f csv -c ~/applications/mssql/mssql.json -q "$sql" >ok 2>oops 
rc=$? 
if ((rc)) # nonzero 
then echo -e "FAIL: rc $rc on [$sql]:\n$(<oops)" >&2 
    case "$(grep SQLSTATE oops)" in 
    *ER_DUP_KEY*) : code to handle duplicate keys error ;; 
    # any other errors you choose to handle . . . 
    *) : code for bailing on errors you don't care to handle ;; 
    esac 
else echo "SUCCESS: $sql" 
fi 

C.F. mysql文档here

这只是一个通用模板。希望能帮助到你。随意要求澄清。

+0

当我运行脚本时,它需要检查sql状态,我试图获取一个数字。恩。 1获得 2未获取 3错误 ./domain-ssl-status.sh'cname.domain.com''status | unobtained | obtain | error' – jphil1971

+0

以下是我所需要的,并感谢您的帮助! 1.我需要接受2个PARAMS一个脚本和死亡如果不2. 2.使用一个case语句来处理PARAM采取不同的行动2. domainSSLStatusId在SQL接受一个数字而不是一个字符串!创建地图 – jphil1971

+0

为什么这么具体? –