代码之家  ›  专栏  ›  技术社区  ›  jphil1971

Bash脚本传递两个参数以获取ssl的状态

  •  0
  • jphil1971  · 技术社区  · 8 年前

    我有一个bash脚本“domain ssl status.sh”。我需要一个带有两个参数的脚本,以便可以按以下方式运行脚本:

    域名和状态是我的两个参数

    域名=$1,状态=$2

    我试着用一个case语句创建一个status\u映射,但没有成功!!我也在这里看到了其他提示,但我的似乎从来没有工作。我的sql语句包括SELECT*FROM DomainSSL,其中domainName='cname。领域但我还是被卡住了。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Paul Hodges    8 年前

    #!/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 
    

    您可能还想尝试保存stdout和stderr以供以后解析。 重写自 # 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