从脚本检查 yum 连接?

kdt*_*kdt 8 redhat centos yum

当访问 yum 存储库时出现问题(例如,如果未配置所需的代理),运行“yum update”之类的命令将等待很长时间,尝试许多不同的镜像。有时这很好,但有时我宁愿快速检查是否可以访问 yum 存储库。

有没有办法让 yum 快速检查其连接性并给我一个状态代码,指示是否可以访问远程存储库?

dav*_*vey 3

这是一种方法,其关键是 yum repolist 命令报告的 *Repo-baseurl:":

# 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
Run Code Online (Sandbox Code Playgroud)

细分:

 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/
Run Code Online (Sandbox Code Playgroud)

使用 grep 提取 baseurl 并通过管道传输到 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
Run Code Online (Sandbox Code Playgroud)

当然,yum 是一个非常好的组合 python 程序,所以我想你也可以将它组合成一个 python 实用程序,导入 yum 的相关部分。

如果没有 reponame,yum repolist 将列出所有 yum 存储库。然后您可以循环处理它们。