Freitag, 29. Juni 2007

Repo-File für Local Mirror Manager

Beim Python-Fähigkeiten sind immer noch etwas beschränkt, auch da ich mich in der letzten Zeit hauptsächlich mit Übersetzungen herumgeschlagen habe. Also mache ich diese Funktionen, welche ich machen kann und die ist das Schreiben einer neuen Konfigurations-Datei für yum. Es ist ein Gerüst für den weiteren Ausbau...in einem ersten Anlauf hat es nur einen Eintrag für Fedora und auch lassen sich die Architektur und Speicherort noch nicht von einer anderen Stelle übertragen.

import socket, os

sys_name = socket.getfqdn(socket.gethostname(  ))
ip_addr = socket.gethostbyname(sys_name)
dir_name = "/home/devel/lmm/yum.repo.d/"

fo = open(dir_name 'fedora-lmm.repo', 'w')
fo.writelines(['[fedora]\n',
               'name=Fedora 7\n',
               'baseurl=http://',ip_addr,'/fedora/linux/releases/7/Everything/i386/os/\n',
               'enabled=1\n',
               'gpgcheck=1\n'])
               'gpgkey=gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora'])
fo.close()
Bei der IP-Adresse wird auch leider nur localhost (127.0.0.1) angezeigt, obwohl eigentlich die IP-Adresse aus dem Netzwerk verwendet werden sollte. Und noch ein weiteres Fragment...vorläufig auch nur für eine Datei, aber später sollte es auch noch gerade das Konfigurations-File für die Updates korrigieren.
# Disable yum files
# search for enable and set it from 1 to 0

import fileinput, string, glob, sys

path = "/home/devel/lmm/test-yum/fedora.repo"

text1 = "enable = 1"
text2 = "enable = 0"

files = glob.glob(path)
for line in fileinput.input(files,inplace=1):
     line = line.replace(text1, text2)
     sys.stdout.write(line)
Der kausale Zusammenhang zwischen dieser Aktion und dem Anlegen der benötigte Datei muss auf jedenfall gegeben sein, sonst deaktiviere ich gerade alle. So existiert nun schon für drei Teile eine Idee. Da ich keine Zeitrahmen habe, habe ich es auch nicht eilig.

Kommentare:

red hat gesagt…

Dass du so fuer ip_addr 127.0.0.1 kriegst ist eigentlich logisch. Wie man an die IPs der interfaces kommt weiss ich in Python leider auch nicht. Ausser natuerlich du rufst ifconfig auf und suchst dann die IPs aus dem output :/

Fabian hat gesagt…

Ich habe ja nicht explizit nach dem Loopback-Interface gesucht...es schient aber, dass diese Funktion auf verscheidenen Betriebssystemen unterschiedlich verarbeitet wird. Auf einer Linux-Maschine 127.0.0.1, auf einer Windows-Maschine die Ip-Adresse, welche die Netzwerkkarte hat.
Ich kann aber nicht sagen, was es zum Beispiel für Auswirkungen hat, wenn mehr als eine Netzwerkkarte vorhanden ist (bei der Linux-Maschine ist dies der Fall). Mal noch ein bisschen weiter probieren, denn die Literatur gibt zu diesem Thema nicht viel her leider.