bitte um hilfe [resolv.conf & der befehl datei.write]

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
m3rlin
User
Beiträge: 5
Registriert: Freitag 6. Dezember 2013, 00:51

guten abend
ich habe schon oft in foren gelesen allerdings ist das das erste mal das ich mich in einem forum angemeldet habe,
ich hoffe ich bin hier richtig ich war unsicher wo ich mein beitrag plazieren sollte.
also ich hab folgendes problem: ich möchte das wenn bei datei(A) "1" eingeben wird ,das sich datei(B)
öffnet und eine resolv.conf datei schreibt.

dateiA

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
# user-UID-dict
import getpass
import os
import time

print "Wähle Ein DNS-SERVER."


print "Provider Primary    DNS Server"

time.sleep(2)
print " "
print " "
print "(N)"
print "(1) Level31<><><><><><<>209.244.0.3"
print "(2) Securly3<>><><><><><184.169.143.224"
print "(3) Google2<><><><><><><8.8.8.8"
print "(4) ComodoSecureDNS<><><8.26.56.26"
print "(5) OpenDNSHome4<><><><>208.67.222.222"
print "(6) DNSAdvantage<><><><>156.154.70.1"
print "(7) NortonConnectSafe5<>198.153.192.40"
print "(8) Public-Root9<><><><>199.5.157.131"
time.sleep(1)
b = getpass.getpass(prompt='DNS Nr.? ')
if b.lower() == '1':
		     print " Ändere Hostname."
                     os.system("python chdns1.py")
dateiB

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
datei = open("resolv.conf", "w")
datei.write("# Generated by NetworkManage
domain Speedport_W723_V_Typ_A_1_00_098
search Speedport_W723_V_Typ_A_1_00_098
nameserver 8.8.8.8
nameserver fe80::1%wlan0\n\n")
datei.close()

datei = open("hostname", "r")
x = datei.read()
datei.close()
print x
mein problem ist das bei dateiB zeile 4

Code: Alles auswählen

datei.write("# Generated by NetworkManage
diese raute ist was bedeutet sie?
und wie kann ich trozdem meine resolv.conf ändern
ich hoffe ihr habt verstanden was mein problem ist
und das ich mich nicht alzu blöd anhöre ich mach das noch nicht so lange :K vielen dank :lol: schonmal im voraus :oops:
BlackJack

@m3rlin: Die Raute bedeutet aus Sicht von Python an der Stelle überhaupt nichts, das ist einfach nur ein Zeichen in der literalen Zeichenkette. Beziehungsweise wäre es, wenn es denn eine syntaktisch korrekte literale Zeichenkette wäre. In der Zeile sollte sich der Python-Compiler nämlich beschweren das das Zeilenende erreicht/überschritten wurde ohne das die Zeichenkette korrekt mit " beendet wurde. Wahrscheinlich wolltest Du hier eine mehrzeilige literale Zeichenkette, die fängt man aber nicht mit einem einzelnen " an.

Welches Python-Tutorial hast Du denn zum lernen durchgearbeitet?
m3rlin
User
Beiträge: 5
Registriert: Freitag 6. Dezember 2013, 00:51

okay verstehe, dann muss ich anderst fragen weist du ob dieses zeichen in der resolv.conf notwenig ist ?
ich habe bei youtube.de ein super tutorial gefunden und habe wikipedia http://de.wikibooks.org/wiki/Python_unter_Linux:_ALLES
gelesen echt super, allerdings komme ich zu dem schluss das komunikation mit anderen menschen manchmal leichter ist als recherche.
vielen vielen dank für die schnelle antwort wansinn.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@m3rlin: in "resolv.conf" bedeutet # dass es sich um eine Kommentarzeile handelt. Dass Python an dieser Stelle einen Fehler meldet, wie BlackJack schon geschrieben hat, liegt allerdings nicht am '#'.
m3rlin
User
Beiträge: 5
Registriert: Freitag 6. Dezember 2013, 00:51

ok vielen dank hoffe ich hab es jetzt verstanden
wie mache ich eine mehrzeilige literale Zeichenkette?

Code: Alles auswählen

# Generated by NetworkManager
domain Speedport_W723_V_Typ_A_1_00_098
search Speedport_W723_V_Typ_A_1_00_098
nameserver 192.168.2.1
nameserver fe80::1%wlan0
ich möchte das mein script den dns server in der resolv.conf ändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Wenn du das verlinkte Tutorial gelesen hast, hast du das hier ueberlesen: https://de.wikibooks.org/wiki/Python_un ... ES#Strings
Zugegeben, es wird dort nicht explizit geschrieben, dass ein Multi-line String mit drei statt einem paar von quotes umgeben wird, aber dafuer hier: http://docs.python.org/2/tutorial/intro ... ml#strings
m3rlin
User
Beiträge: 5
Registriert: Freitag 6. Dezember 2013, 00:51

so hab mir das aus dem kopf geschlagen das er es in der dem verzeichniss und der datei ändert
er soll nur die datei schreiben kopieren tue ich sie später mit os.system("mv resolv.conf etc/ ")
also ich möchte nur die datei schreiben bitte helft mir.
m3rlin
User
Beiträge: 5
Registriert: Freitag 6. Dezember 2013, 00:51

tschuldigt ich drücke mich sehr dumm aus er soll einfach nur mir eine resolv.conf erstellen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dann öffne doch die ``/etc/resolv.conf`` mit ``open``, schreibe die Änderungen rein mit ``.write`` und dann mach die Datei mit ``.close()`` wieder zu. Keine Raketenwissenschaft. Oder nutze das ``with``-Statement um die Datei zu öffnen, dann kannst du dir am Schluss das ``.close()`` sparen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten