n行を含むファイルを読み取り、完了した行数を印刷します。

n行を含むファイルを読み取り、完了した行数を印刷します。

次のbashスクリプトを使用してファイルのアクティブホストを確認しています。

echo "Checking for 200 status code.."
cat $1 | sort -u | while read line; do
    if [ $(curl -I -s "https://$line" -o /dev/null -w "%{http_code}\n") = 200 ]
        then
            echo $line >> livedomains
    else
        echo $line >> otherdomains
fi
done < $1

コードは正常に動作します。確認する残りの行数(url)をユーザーに知らせるには、しばらくして確認した行数(url)を印刷する必要があります。

ベストアンサー1

#!/bin/bash

# update status after step seconds or greater
step=5
count=0
echo "Checking for 200 status code.."
start=$(date +'%s')

sort -u "$1" | while read line; do
    http_status=$(curl -I -s "https://$line" -o /dev/null -w "%{http_code}\n")
    case "$http_status" in
        200)
            echo "$line" >> livedomains
            ;;
        302)
            echo "$line" >> redirecteddomains
            ;;
        *)
            echo "$line" >> otherdomains
    esac
    ((count++))

    now=$(date +'%s')
    if [ "$start" -le "$((now - step))" ]; then
        start=$now
        echo "completed: $count"
    fi
done

更新間隔は5秒に設定されており、120秒に変更できます。

編集する:私は心を変え、代わりにカウンター変数を使用しましたwc

追加の変更:

  • #!/bin/bash最初の行にshebangを追加しました。
  • < $1入力の最後の行を削除する(それ以外の場合はソートされません)
  • いくつかの引用を追加しました

おすすめ記事