2014-02-21 109 views
0

我做了這是用來使用在MacOS 運行一個程序的時候,基本上控制相機的腳本和IP地址的Python 2.7.6 telnetlib硬編碼密碼

我的問題是,它需要一個密碼

我使用http://docs.python.org/2/library/telnetlib.html#telnetlib.Telnet這個例子,但它不起作用 我不希望它提示用戶輸入密碼,我只是想每次運行應用程序時都要HardCode。

if ip: 
     self.conn = telnetlib.Telnet(ip, 24) 
     self.consume_telnet() 
    else: 
     self.conn = None 


def telnet_send(self, s): 
    passCode = '********'        
    password = getpass.getpass() 
    if self.conn: 
     self.conn.write(s + '\r\n') 
     if password: 
      self.conn.read_until('Password: ') 
      self.conn.write(password.strip() + '\n') 

    else: 
     print s 
+0

如果您有任何問題,請添加代碼的重要部分和/或添加錯誤消息。 – CSchulz

+0

我已添加代碼... 密碼提示用戶輸入密碼。我不想這樣做。密碼只需要一次,永遠不需要。 – user3337714

+0

你能否請求幫忙?我仍然無法處理代碼。 – user3337714

回答

0

密碼提示getpass.getpass()調用。此方法始終要求用戶輸入密碼。檢查這個文檔頁面:http://docs.python.org/2/library/getpass.html

我假設你正在做外部初始化telnet_send方法。只需在此初始化代碼中設置密碼 - 如self.password = getpass.getpass(),然後在其他地方使用此密碼。

self.password = getpass.getpass() 

def telnet_send(self, s): 
    passCode = '********'        
    if self.conn: 
     self.conn.write(s + '\r\n') 
     if self.password: 
      self.conn.read_until('Password: ') 
      self.conn.write(self.password.strip() + '\n') 
    else: 
     print s 
+0

感謝您的回覆。 它仍然提示我輸入密碼。 我不希望它提示我輸入密碼。我嘗試了你的代碼,但徒勞無功。我只想要HARDCODE密碼,不需要用戶輸入! – user3337714

+0

您是否期望運行一個腳本來自動提取用戶的unix密碼?這對用戶不好,對吧?如果用戶同意按提示輸入密碼,那就沒問題 - 這是他/她的責任。但是第三方密碼收集腳本是非常糟糕的。你可以得到一個密碼哈希等嘗試http://docs.python.org/2/library/hashlib.html –

+0

這與任何問題無關 上述代碼是我的班級模塊的一部分 它調用一個IP地址。 IP地址用於視頻會議攝像機。代碼是幫助視頻管理員更改攝像頭位置。它會打開一個帶相機位置的GUI對話框。您可以點擊任何攝像頭:現在點擊時需要輸入密碼才能接受所有更改。所以我想要HardCode視頻管理員的密碼。 GUI不能提示密碼,因此HardCODE是唯一的選擇。 上面的代碼不知道怎麼實現。 – user3337714