2017-03-11 3 views
-1

Ich versuche, ein Bash-Skript zu erstellen, die URL aus Liste Statuscode und Echo-Server-Name aus Header überprüfen. Ich bin eigentlich neu.Curl echo Server Antwort Bash

#!/bin/bash 
     while read LINE; do 
      curl -o /dev/null --silent --head --write-out '%{http_code}' "$LINE" 
      echo " $LINE" & 
      curl -I /dev/null --silent --head | grep -Fi Server "$SERVER" 
      echo " $SERVER" 
     done < dominios-https 

bekomme ich folgende Ausgabe

301 http://example.com 
grep: : No such file or directory 
+0

Wo finden Sie den Wert von "SERVER"? – chepner

+0

'set -x' ist dein Freund, um zu sehen, was zur Laufzeit tatsächlich passiert. –

Antwort

0

1) während Lese LINE nicht letzte Zeile, wenn Textdatei nicht mit neuen Zeilen beendet nutzen kann.

2) Sie setzen nicht "$ SERVER" überall und grep sagen, es

3) Nicht alle Server zurückgeben "Server:" in Header

versuchen es:

scriptDir=$(dirname -- "$0") 
for siteUrl in $(< "$scriptDir/myUrl.txt") 
do 
    if [[ -z "$siteUrl" ]]; then break; fi # break line if him empty 
    httpCode=$(curl -I -o /dev/null --silent --head --write-out '%{http_code}' "$siteUrl") 
    echo "HTTP_CODE = $httpCode" 
    headServer=$(curl -I --silent --head "$siteUrl" | grep "Server" | awk '{print $2}') 
    echo "Server header = $headServer" 
done