Verificando a conectividade do yum de um script?

4

Quando houver um problema com o acesso ao yum repos (por exemplo, se um proxy necessário não estiver configurado), a execução de um comando como 'yum update' aguardará por muito tempo a tentativa de vários espelhos diferentes. Às vezes isso é bom, mas às vezes eu preferiria verificar rapidamente se o acesso ao yum repos é OK.

Existe uma maneira de fazer com que o yum verifique rapidamente sua conectividade e me forneça um código de status indicando se o acesso a repositórios remotos está correto?

    
por kdt 17.05.2013 / 11:33

2 respostas

2

Aqui está uma maneira de fazer isso, o ponto crucial é o * Repo-baseurl: "que é reportado pelo comando 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

Repartição disso:

 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/

Extraia a base com grep e pipe para awk para o URL.

use a opção de cabeçalho de dump do curl para ver o status 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

É claro que o yum é um programa python muito bem montado, então eu acho que você também poderia colocá-lo junto como um utilitário Python importando os bits relevantes do yum.

Sem um repolist do reponame yum irá listar todos os repositórios do yum. Você pode então processá-los em um loop.

    
por 17.05.2013 / 12:01
0

Eu não acho que haja um comando geral para verificar a conectividade do yum. O que você pode fazer é isto: crie um repo de teste em /etc/yum.repos.d/test.repo que apenas verifica um único local em vez de toda a lista de espelhos para que as coisas sejam mais rápidas.

[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

e, em seguida, dar um comando yum no formulário

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

Se você tiver um erro de conexão, as chances são de que sua conectividade com a Internet seja a culpa. É claro que o centos.org também pode estar no exemplo acima, mas as chances disso são menores.

    
por 17.05.2013 / 12:02