Проверка вкусной возможности соединения из сценария?

Это могло произойти, если Dom0 исчерпывает память и начинает отказывать, например. Или если было спорное устройство - совместно использовано для записи несколькими машинами - но я предполагаю, что это не обстоятельства здесь. Давайте надеяться, что никто не взломал Ваше поле и играет с Вами. Или возможно некоторый простой датчик сторожевого таймера/heartbeat, сбрасывающий Вашу машину, потому что этому не удалось сообщить. В целом больше информации могло пролить больше света на это.

4
задан 17 May 2013 в 12:33
4 ответа

Вот один из способов сделать это, суть в этом * Repo-baseurl: ", о котором сообщает команда yum repolist:

# curl -s --dump-header - `yum repolist rhcd -v | grep Repo-baseurl | awk  '{print $2}'` -o  /dev/null

HTTP/1.1 200 OK
Date: Fri, 17 May 2013 09:58:30 GMT
Server: Apache/2.2.3 (CentOS)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1

Расшифровка этого:

 yum repolist rhcd -v
Loading "fastestmirror" plugin
Config time: 0.104
Yum Version: 3.2.22
Loading mirror speeds from cached hostfile
Repo-id     : rhcd
Repo-name   : rhcd
Repo-status : enabled:
Repo-updated: Mon Nov  1 14:37:19 2010
Repo-pkgs   : 2,599
Repo-size   : 3.7 G
Repo-baseurl: http://lochost:81/core_build/il31/centos/5Server/i386/CentOS/

Извлеките baseurl с помощью grep и труба к awk для URL-адреса.

используйте параметр заголовка дампа curl, чтобы увидеть статус http:

HTTP/1.1 200 OK
Date: Fri, 17 May 2013 09:58:30 GMT
Server: Apache/2.2.3 (CentOS)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1

Конечно, yum - действительно хорошо скомпонованная программа на Python, поэтому я думаю, вы также можете собрать ее вместе как утилиту python, импортирующую соответствующие биты yum.

Без репозитория yum repolist отобразит все репозитории yum. Затем вы можете обработать их в цикле.

2
ответ дан 3 December 2019 в 03:59

Я не думаю, что существует общая команда для проверки возможности соединения yum. Что вы можете сделать: создайте тестовое репо в /etc/yum.repos.d/test.repo , которое проверяет только одно место, а не весь список зеркал, чтобы все было быстрее.

[test]
name= test
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled = 0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

, а затем выдавайте ням. команду в форме

yum --disablerepo=* --enablerepo=test list available

, если вы получаете сообщение об ошибке подключения, скорее всего, ваше подключение к Интернету неисправно. Конечно, centos.org также может быть недоступен в приведенном выше примере, но шансы на это меньше.

0
ответ дан 3 December 2019 в 03:59

Для меня работала следующая команда:

yum repolist -v | grep Repo-baseurl | awk  '{print $3}'

вместо этой:

yum repolist rhcd -v | grep Repo-baseurl | awk  '{print $2}'

А для нескольких yum-репозиториев вы можете сделать следующее:

for repourl in $(yum repolist -v | grep Repo-baseurl | awk  '{print $3}') ; do echo $repourl; curl -s --dump-header - $repourl -o  /dev/null; done

Результатом будет:

http://repo-url-1/
HTTP/1.1 200 OK
Date: Sat, 31 Aug 2019 08:32:35 GMT
Server: Apache/2.2.15 (CentOS)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=UTF-8

http://repo-url-2/
HTTP/1.1 200 OK
Date: Sat, 31 Aug 2019 08:32:36 GMT
Server: Apache/2.2.15 (CentOS)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=UTF-8
0
ответ дан 3 December 2019 в 03:59

У меня была такая же потребность (проверьте, правильно ли настроен прокси), и хотя приведенные выше решения давали подсказки, ни одно из них не было полным решением, поскольку проверка с помощью curl не использует прокси-сервер http, настроенный в ням.

Во-первых, yum-прокси можно настроить:

  • для каждого репо, добавив proxy = http: // : в каждый /etc/yum.repos. d / *. repo

  • глобально, добавив proxy = http: // : и http_caching = none в yum.conf (без кеширования во избежание получение устаревшего файла repmod.xml, вызывающего несоответствие контрольной суммы)

1. Сначала получите список репозиториев и URL-адресов:

#Produces a csv with 'repo_id#repo_url' rows
yum repolist enabled -v|egrep 'Repo-id|Repo-baseurl' | paste -sd ' \n' | awk '{printf ("%s#%s\n",$3,$6)}' > repolist.csv

2. Очистите кеш yum, чтобы избежать кеширования ответов

yum clean all

Затем для каждого репозитория в repolist.csv выполните следующие действия:

3a. запросить содержимое репо с помощью yum (около 15 секунд для базы)

#count packages, outputs: 9352
yum --quiet --disablerepo=* --enablerepo=base list available|wc -l

3b. в качестве альтернативы запросить конкретный пакет с повторным запросом (около 7 секунд для базы)

# outputs: 1
repoquery --repoid=base --qf "%-20{repoid} %{name}"  openssh-clients|wc -l
1
ответ дан 29 April 2020 в 08:00

Теги

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