我是一個Python的新手,但是測試了一些我在Ubuntu學到的東西。 基本上,該腳本應該設置您的TCP/IP配置,然後重新啓動網絡守護程序並顯示更改。腳本執行停止在os.execlpe()
這是整個腳本:
#!/usr/bin/env python
import commands
import os
import sys
euid = os.geteuid()
if euid != 0:
print "Script not started as root. Running sudo.."
args = ['sudo', sys.executable] + sys.argv + [os.environ]
# the next line replaces the currently-running process with the sudo
os.execlpe('sudo', *args)
print 'Running. Your euid is', euid
print "IP"
IP = raw_input(">>")
print "Gateway"
PE = raw_input(">>")
ifconfig = commands.getoutput("ifconfig")
interfaz = ifconfig[0:5]
ArchivoInterfaces = open("/etc/network/interfaces", "w")
ArchivoInterfaces.write("#auto lo\n#iface lo inet loopback\nauto %s\niface %sinet static\naddress %s\ngateway %s\nnetmask 255.255.255.0"%(interfaz, interfaz, IP, PE))
ArchivoInterfaces.close()
ArchivoResolv = open("/etc/resolv.conf", "w")
ArchivoResolv.write("# Generated by NetworkManager\ndomain localdomain\nsearch localdomain\nnameserver 8.8.8.8\nnameserver 8.8.4.4")
ArchivoResolv.close()
os.execlpe('/etc/init.d/networking', "test","restart", os.environ)
print "Todo esta correcto, su IP ahora es %s" %(IP)
fin = raw_input("write d and press enter to show the changes, or press enter to exit.")
if fin == "d":
ArchivoResolv = open("/etc/resolv.conf")
ArchivoInterfaces = open("/etc/network/interfaces")
ifconfig2 = commands.getoutput("ifconfig")
print "ARCHIVO resolv.conf\n"+ArchivoResolv.read()+"\n\n"+"ARCHIVO interfaces\n"+ArchivoInterfaces.read()+"\n\n"+"RESULTADO DE \"ifconfig\"\n"+ifconfig2
fin = raw_input("Presiona ENTER para salir.")
不幸的是,它一直停在這行 - 我不知道爲什麼:
os.execlpe('/etc/init.d/networking', "test","restart", os.environ)
到達該點後,腳本運行重新啓動,然後退出。
我很想讓它運行腳本的最後部分,以便我可以看到發生了什麼變化,但我無法。有任何想法嗎?
好吧,我會測試它,謝謝你的回答快,反正即時通訊現在只是curius,爲什麼在第一os.execlpe(「須藤」,*參數),我跑,它繼續我的整個腳本? –
因爲它工作正常 - 它在'sudo'下重新啓動你的腳本。在那之後沒有必要繼續。 – duskwuff
再次感謝您,它運作得非常好。 –