4
我需要構建一個腳本來獲取儘可能多的主機的telnet輸出,並將它們保存到每個主機的單獨文件中。腳本應該作爲守護進程運行。Python多個telnet會話
目前我有一個封裝邏輯的功能,可以爲單個主機做telnetlib
,但我不知道如何繼續。我打算開一個過程(multiprocessing.Process
)每臺主機,但我懷疑這將是一種資源浪費,就必須存在一種更好的方法:)
def TelnetLogSaver(hostname,ip,filename):
# open files and telnet sessions
f = open(filename,"a")
tn = telnetlib.Telnet(ip,23,TIMEOUT)
# login
e = tn.read_until("Login: ")
tn.write(USER+"\n")
# and password
e = tn.read_until("Password: ")
tn.write(PASSWORD+"\n")
# Connected. Start infinite loop to save messages log
while True:
e = tn.read_until(PROMPT,TIMEOUT)
if e is not "":
f.write(datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S"))
f.write(e)
f.flush()
# avoid session timeout
tn.write("\n")
e = tn.read_until(PROMPT
你可以試試多線程嗎?在主要受網絡時間限制的應用程序中,GIL作爲瓶頸應該完全可以忽略不計,而且線程要輕得多。 – Phoshi
聽起來不錯,謝謝! – danidelvalle
一個想法:使用select() – ReyCharles