как насчет следующего?
cut file -d'|' -f2,3,4 | tr '|' '\n'
Приведенная выше команда напечатает фиксированное количество столбцов (3). Если вы хотите напечатать переменное количество столбцов до первого появления /
, вы можете использовать что-то вроде:
cut -d'/' -f1 file | cut -d'|' -f2- | tr '|' '\n'
Если у вас установлены инструменты timeout
, traceroute
и bing
, этот сценарий может помочь.
При этом выполняется итерация по списку traceroute
и сравнение скорости пакета с «текущим» хостом со скоростью пакета предыдущего хоста. Затем пользователю сообщается об этой разнице (если есть).
Требуется целевое имя хоста. Поскольку вы используете youtube-dl
, вам нужно получить это, чтобы сообщить вам имя хоста сервера, доставляющего видео. Вот пример использования для получения имени хоста:
youtube-dl --get-url --simulate 'https://www.youtube.com/watch?v=OQZlqeUBbck' 2>/dev/null |
cut -d/ -f3
Для меня это дает мне имя хоста r7 --- sn-aiglln76.googlevideo.com
. После этого вы можете запустить сценарий (см. Ниже). Для запуска требуется некоторое время, и в течение первой минуты или около того вы можете вообще не получить никаких результатов.
#!/bin/bash
#
target="$1" # Hostname
test -z "$target" && read -p "Target destination: " target
phop=0 first=y
timeout 90 traceroute "$target" |
awk '$1+0' |
while read hop rhost rip junk
do
test "$rhost" == '*' && continue
rip="${rip//[()]/}"
# Is the host reachable?
ping -q -c1 -w4 "$rip" >/dev/null 2>&1 || continue
if test -n "$rhost" -a -n "$phost"
then
test -n "$first" && { printf "Hops\tRoute\n"; first=; }
# Test the link speed between these two hosts
bing=$(
bing -c1 -e20 "$pip" "$rip" 2>/dev/null |
tail -1 |
awk '!/zero/ {print $2}'
)
# Report any useful result
printf "%2d-%2d\t%s (%s) to %s (%s): %s\n" "$phop" "$rhop" "$phost" "$pip" "$rhost" "$rip" "${bing:-no measured difference}"
fi
# Save the current host for the next hop comparison
phop="$rhop" phost="$rhost" pip="$rip"
done
Некоторые результаты тестового запуска в удаленном офисе в Великобритании:
Hops Route
1- 4 10.20.1.254 (10.20.1.254) to aaa.obscured (): no measured difference
4- 5 be200.asr01.thn.as20860.net (62.128.207.218) to 195.66.227.42 (195.66.227.42): no measured difference
5- 6 195.66.227.42 (195.66.227.42) to core3-hu0-1-0-5.faraday.ukcore.bt.net (62.172.103.132): no measured difference
6- 7 core3-hu0-1-0-5.faraday.ukcore.bt.net (62.172.103.132) to 195.99.127.60 (195.99.127.60): no measured difference
7- 8 195.99.127.60 (195.99.127.60) to acc1-10gige-0-2-0-0.bm.21cn-ipp.bt.net (109.159.248.25): 512.000Mbps
8- 9 acc1-10gige-0-2-0-0.bm.21cn-ipp.bt.net (109.159.248.25) to 109.159.248.99 (109.159.248.99): no measured difference
9-14 109.159.248.99 (109.159.248.99) to bbb.obscured (): 717.589Kbps
Из этого видно, что мой трафик, похоже, сильно замедляется между 9 и 14, когда мы упали до типичного ADSL в восходящем направлении.
Я должен указать, что bing
не может измерить разницу в скорости между двумя удаленными точками, если их скорость соединения превышает ваше доступное соединение с этими точками. Мое соединение составляет 512 Мбит / с, поэтому я не могу измерить большинство каналов связи.