Le 05/04/2016 07:06, Paul Wise a écrit : > On Tue, Apr 5, 2016 at 9:05 AM, Stéphane Blondon wrote: > >> There are no commit since two years, so I'm not sure it's still alive. > > Nevertheless, it is the way forward. > >> I tried to extract the useful code from the script. It depends on the >> libnet-ldapapi-perl package and the configuration of the machine which >> is running the LDAP. > > The Debian LDAP can be accessed from any machine, anonymous access > will only return the public data (including hostname stuff). So you > shouldn't need to run on db.d.o nor read the config file at all.
Thank you for these infos, I ignored them. :-) I attached 2 scripts (one in Perl, one in Python) allowing to get the names of the machines providing packages.debian.org service. I think some checks about LDAP errors could be added but it's a start. I guess the perl script could be included in order to fix the current bug report. -- Stéphane
packagemachines.pl
Description: Perl program
#! /usr/bin/python
#
# package python-ldap must be installed
import ldap
def get_packages_machines():
machines = _request_machines_on_ldap()
packages_machines = []
for machine in machines:
details = machine[1]
try:
if "packages.debian.org" in details["purpose"][0]:
packages_machines.append(details["host"][0])
except KeyError:
pass
return packages_machines
def _request_machines_on_ldap():
l = ldap.initialize("ldap://db.debian.org")
l.simple_bind_s("", "")
ldap_result_id = l.search("dc=debian,dc=org", ldap.SCOPE_SUBTREE, "host=*")
result_type, result_data = l.result(ldap_result_id, 1)
l.unbind_s()
return result_data
if __name__ == "__main__":
print(get_packages_machines())
signature.asc
Description: OpenPGP digital signature

