2017-10-05 61 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

爲什麼這麼具體? –