2013-08-31 123 views
0

我對python腳本非常陌生,但我想我會試試看看我是否可以自動執行一些簡單的任務,並通過Telnet定期執行這些任務。telnetlib error with read_until

我發現了一個基本的Python腳本的telnet:

import getpass 
import sys 
import telnetlib 

HOST = "localhost" 
user = raw_input("Enter your remote account: ") 
password = getpass.getpass() 

tn = telnetlib.Telnet(HOST) 

tn.read_until("login: ") 
tn.write(user + "\n") 
if password: 
    tn.read_until("Password: ") 
    tn.write(password + "\n") 

tn.write("ls\n") 
tn.write("exit\n") 

print tn.read_all() 

這 '似乎' 工作,但沒有返回到控制檯。由於登錄過程需要幾秒鐘,所以我認爲它只是太快了&需要等待用戶提示。所以我試着添加這個。

tn.read_until(">") 

它不工作...我得到這個錯誤

File "test.py", line 16, in <module> 
    tn.read_until(">") 
    File "/usr/lib/python2.7/telnetlib.py", line 319, in read_until 
    return self.read_very_lazy() 
    File "/usr/lib/python2.7/telnetlib.py", line 395, in read_very_lazy 
    raise EOFError, 'telnet connection closed' 
EOFError: telnet connection closed 

我覺得我失去了一些東西簡單......但解決的辦法似乎是影射我。任何意見將不勝感激!

+0

也許你需要發送'\ r \ n'而不是'\ n',你可以用wireshark確認 –

+0

這樣做了!我用\ r替換了\ n,現在它似乎正在處理一項治療! – user2735454

回答

0

根據平臺的不同,您可能不得不使用另一行分隔符。嘗試\r\r\n

0

檢查是否this鏈接 - 它可能會幫助你。我想你可能想指定

tn.write("vt100\n") 

之前打印出任何東西。