Короче. Есть у меня список из 18к ip. Мне из них нужно выудить те, которые хотя бы редирект (30x) или ОК (200) Руками, ясен пень, делать всё это не вариант. Решил написать скрипт. Вот сам скрипт #!/bin/bash IP_LIST=() while read -r line; do IP_LIST+=("$line"); done < "ip.txt" for ip in "${IP_LIST[@]}"; do http_code=$(curl -o /dev/null -w "%{http_code}" $ip) if [ "$http_code" -ge 200 ] && [ "$http_code" -lt 400 ]; then echo "Проверка адреса: $ip" echo " -> Доступен (HTTP $http_code)" #else # echo "Ошибка" fi done Code #!/bin/bash IP_LIST=() while read -r line; do IP_LIST+=("$line"); done < "ip.txt" for ip in "${IP_LIST[@]}"; do http_code=$(curl -o /dev/null -w "%{http_code}" $ip) if [ "$http_code" -ge 200 ] && [ "$http_code" -lt 400 ]; then echo "Проверка адреса: $ip" echo " -> Доступен (HTTP $http_code)" #else # echo "Ошибка" fi done Столкнулся с таким выводом в консоли во время запуска: curl: (3) URL rejected: Malformed input to a URL function В итоге проблема возникает в http_code=$(curl -o /dev/null -w "%{http_code}" $ip) в опции -w "%{http_code}" . При этом когда запускаю curl с такими же параметрами, но без записи в переменную и ip ставлю руками, то всё работает прекрасно и выводит http код без всяких ошибок. Как можно обойти этот бред?
kioshka, сейчас у тебя идут $ip Я так предполагаю в чистом виде 1.1.1.1, теперь нужно сделать Loading... 1.1.1.1 .
kioshka, так же добавь логирование что у тебя по итогу попадает в саму переменную $ip, может на стадии парсинга происходит проблема.
el9in , START proverka ip addr = 203.180.72.35 http:VV203.178.113.114 curl: (3) URL rejected: Malformed input to a URL function http:VV203.180.72.5 curl: (3) URL rejected: Malformed input to a URL function http:VV203.180.72.1 curl: (3) URL rejected: Malformed input to a URL function http:VV203.180.72.4 curl: (3) URL rejected: Malformed input to a URL function
Попробовал провернуть такую штуку Http=" Loading... " echo "$Http""$ip" http_code=$(curl -o /dev/null -w "%{http_code}" "$Http""$ip") Хоть **** конечно всё равно хромают. START proverka ip addr = 203.180.72.35 Loading... 203.178.113.114 curl: (3) URL rejected: Malformed input to a URL function Loading... 203.180.72.5 curl: (3) URL rejected: Malformed input to a URL function Loading... 203.180.72.1 curl: (3) URL rejected: Malformed input to a URL function Loading... 203.180.72.4 curl: (3) URL rejected: Malformed input to a URL function Loading... 203.180.72.26 curl: (3) URL rejected: Malformed input to a URL function Loading... 203.180.72.23 curl: (3) URL rejected: Malformed input to a URL function Loading... 203.180.72.12 curl: (3) URL rejected: Malformed input to a URL function Loading... 203.180.72.9 curl: (3) URL rejected: Malformed input to a URL function
el9in , так курл у меня съел прямой ip, вот я только не пойму почему он отказывается выполнять это в bash
Я нашёл проблему. Проблема в том, что почему-то Curl отказывается принимать ip из txt файла. Хотя нет дополнительных символов или ещё чего-то подобного. Видимо ему не нравится тип элемента