Wget не загружает изображения веб-сайта?

Сохраняется справочный файл автозаполнения в /etc/bash_completion.d/pmount в моей системе.

Решение 1. (Повторное) перемещение / переименование файла

По предложению Тома Ханта, это самое простое решение. Зависание прекращается, однако автозаполнение работает неразумно, т. Е. Придерживается имен файлов в текущем каталоге.

Решение 2. Восстановление файла автозаполнения

Проблема со справочным файлом возникает в функции _pmount () в строке 62 файла (добавлены новые строки для удобства чтения - не в исходном файле):

devices="$( command ls $(grep -v '^[[:space:]]*#' /etc/pmount.allow )\
$(grep 1 /sys/block/*/removable |\
sed -e 's,/sys/block/,/dev/,;s,/removable:1,*,') 2>/dev/null |\
sort -u | sed -e 's,\(^/dev/\)\(.*\),\1\2 \2,' ; \
#this last line is of interest, as the errors occur here
grep $mdir /proc/mounts | sed -e 's,.*\($mdir/[^ ]*\).*,\1,' )"

с ошибкой, заключающейся в том, что для

grep $mdir /proc/mounts

переменная $ mdir не определена ранее, и поэтому сценарий зависает.

Итак, я добавил определение mdir

mdir="$(readlink -f /media)"

, взятое из функции _pumount () того же скрипта (см. Строку 75), например, в строка 36 как mdir , похоже, означает m edia (или m ount) dir ectory, т.е.стандартная точка монтирования для pmount . Кроме того, я также добавил mdir в локальные переменные функции _pmount () (строка 25) из соображений безопасности.

Автозаполнение теперь перестает зависать, но если раздел съемного диска смонтирован, он ведет себя странно, поскольку затем показывает подключенный диск, его точку монтирования и всю информацию из / proc / mounts , например:

/media/sdc1
rw,nosuid,nodev,noexec,relatime,uid=1000,gid=1000,fmask=0177,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,quiet,utf8,errors=remount-ro

Это связано с той же самой строкой 62, где произошла ошибка, теперь проблема заключается в этой части:

grep $mdir /proc/mounts | sed -e 's,.*\($mdir/[^ ]*\).*,\1,'

где команда sed должна завершиться неудачно (т.е. команда), поскольку одинарные кавычки подавляют оценку $ mdir , поэтому я заменил их на двойные кавычки:

grep $mdir /proc/mounts | sed -e "s,.*\($mdir/[^ ]*\).*,\1,"

pmount автозаполнение теперь пропускает информацию из / proc / mounts , но по-прежнему показывает уже смонтированные разделы, включая точку монтирования / media / sdc1 .

Я не могу сказать, что является стандартным поведением pmount , но я сделал следующее, чтобы фактически подавить перечисление любых разделов, которые уже были смонтированы, опять же, начальная строка 62 теперь изменена на (добавлены новые строки для удобства чтения - следует удалить в скрипте автозаполнения):

 devices="$( command ls $(grep -v '^[[:space:]]*#' /etc/pmount.allow )\
 $(grep 1 /sys/block/*/removable |\
 sed -e 's,/sys/block/,/dev/,;s,/removable:1,*,') 2>/dev/null |\
 sort -u | sed -e 's,\(^/dev/\)\(.*\),\1\2 \2,' \
 #previous block identical to original script
 #the following pipe replaces a semicolon from the original script
 #and so does anything that follows 
 | grep -v "$( if [[ $( grep $mdir /proc/mounts ) ]] ;
               then grep $mdir /proc/mounts |\
                    sed -e "s,.*\($mdir/[^ ]*\).*,\1," \
                        -e "s,$mdir/,," -e 's, ,\|,g' ;
               else echo $mdir ; fi \
             )"
 )"

Теперь, в отличие от исходного скрипта, выходные данные первых двух grep направляются в grep , где уже смонтированные разделы фильтруются по сравнению с любыми монтировками в / media , взятыми из / proc / mounts .Цикл if необходим для различения случаев пустого / media и случая с уже смонтированными разделами.

С этими изменениями pmount будет вести себя, как показано ниже:

pmount <TAB to autocomplete>
/dev/sdc   /dev/sdc1  /dev/sdc2  /dev/sr0   sdc        sdc1       sdc       sr0
pmount sdc1
#successful mounting of sdc1
pmount <TAB to autocomplete>
/dev/sdc  /dev/sdc2  /dev/sr0  sdc       sdc2       sr0

Т.е. смонтированный раздел подавляется, в то время как другой раздел диска (и сам диск) по-прежнему отображается.

Обратите внимание на важность определения mdir в качестве первого шага!

Дополнительное примечание к pmount

Обратите внимание, что это автозаполнение сканирует / sys / block / * / remoable для 1 , т.е. перечисляет только устройства, у которых съемный бит набор. Однако другие приводы могут быть установлены, введя их, например, через pmount / dev / sdd1 , они просто не будут отображаться при автозаполнении. AFAIK это предполагаемое поведение, и я сохраню его как есть. В моем случае это происходит с внешним жестким диском, на котором у меня работает раздел ext4 .

2
06.07.2018, 18:36
1 ответ

Это проблема конкретного сайта. Бег

 wget -H -p -r --user-agent="Mozilla/5.0" -nd --accept jpg,png https://suzuki88.mforos.com/194412/11461305-brico-con-mi-nuevo-suzuki-en-proceso-de-transformacion-muchas-fotos/

дает мне список robot.txt. *файлы с содержимым:

User-agent: *
Disallow:

, что в основном означает, что веб-сайт думает, что вы робот, пытающийся исправить некоторые уязвимости безопасности сайта. И правило состоит в том, чтобы запретить*(всем )роботам доступ к любой части сайта афаиу.

1
27.01.2020, 22:17

Теги

Похожие вопросы