Заменить
ip=dig +short myip.opendns.com @resolver1.opendns.com
на
ip=$(dig +short myip.opendns.com @resolver1.opendns.com)
Я думаю, что это то, что вы спрашиваем. Взбивается за 3 минуты.
wget -q https://www.privateinternetaccess.com/pages/network/ -O - | grep -E -o '>[^.]+\.privateinternetaccess\.com<' | tr -d '[<>]' | while read host ;do host $host ;done | awk '{print $NF}' | sort -u > ip_list
Таким образом, мы получаем веб-страницу со всеми именами хостов с помощью wget и выводим ее в STDOUT, подавляя отчеты об активности из wget.
wget -q https://www.privateinternetaccess.com/pages/network/ -O -
Мы ищем имена хостов в выводе.
grep -E -o '>[^.]+\.privateinternetaccess\.com<'
Затем используйте tr, чтобы удалить уголки из имен хостов.
tr -d '[<>]'
Затем мы перебираем имена хостов с помощью цикла while bash и разрешаем их.
while read host ;do host $host ;done
Преимущество использования хоста перед пингом имени в том, что вы получите их все без дублирования.
Вывод разрешения имен очищается с помощью awk, а затем однозначно сортируется, хотя я не думаю, что будут дубликаты, и записывает результаты в файл ip_list .
awk '{print $NF}' | sort -u > ip_list
Если вам интересно, что делает awk: она печатает последнее поле каждой строки.
Вы можете попробовать этот скрипт Bash Выберите самый быстрый сервер PIA
Требуется программа netselect.
Выбирает самый быстрый сервер из выбранной страны
Затем выбирает самый быстрый IP-адрес для этого сервера.
Вполне возможно. Я сделал это (с PHP )и опубликовал все серверы на https://github.com/Lars-/PIA-servers. Это занимает некоторое время, так как DNS не меняется каждую секунду, но это сработало.