2014-09-26 45 views
0

我正在嘗試在python中編寫一個腳本,該腳本從文件(這是一個用戶名列表)獲取輸入,併爲smtp服務器運行VRFY命令。以下是腳本。從文件中獲取python腳本的輸入

我幾乎是一個新的python。我能夠在互聯網的幫助下創建下面的腳本。在這個腳本中,必須使用特定的用戶名運行腳本。

如何提供一個包含用戶名列表的文件,並且腳本爲文件中的每個用戶執行VRFY

!/usr/bin/python 

import socket 
import sys 
if len(sys.argv) != 2: 
     print "usage: vrfy.py <username>" 
     sys.exit(0) 

#create socket 
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
#connect to the server 
connect=s.connect(('10.10.10.10',25)) 
#REceive the banner 
banner=s.recv(1024) 
print banner 
#VRFY a user 
s.send('VRFY ' + sys.argv[1] + '\r\n') 
result=s.recv(1024) 
print result 
#close the socket 
s.close 

感謝,

+0

非常感謝你們的紳士們。非常感謝您的幫助。感謝sk11,感謝Dominik。 Sk11可以請讓我知道下面的代碼是否完全正確。對於用戶u: user = u.strip() – daironman 2014-09-26 13:18:53

+0

'strip()'基本上從字符串中刪除空格。檢查[文檔](https://docs.python.org/2/library/stdtypes.html)。當你從文件中讀取行時,所有條目都將包含''\ n'','strip()'將刪除所有這些。 – sk11 2014-09-26 14:29:29

回答

1

假設users.txt包含用戶名,像下面的東西會做這項工作。

!/usr/bin/python 

import socket 
import sys 

# Probably u don't need it now 
#if len(sys.argv) != 2: 
    #print "usage: vrfy.py <username>" 
    #sys.exit(0) 

with open('users.txt', 'r') as f: 
    users = f.readlines() 

#create socket 
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
#connect to the server 
connect=s.connect(('10.10.10.10',25)) 
#Receive the banner 
banner=s.recv(1024) 
print banner 

for u in users: 
    user = u.strip() 

    #VRFY a user 
    s.send('VRFY ' + user + '\r\n') 
    result=s.recv(1024) 
    print result 

#close the socket 
s.close 
0

您可以通過使用open()打開Python中的文件。我假設你的文本文件的完整用戶名看起來像這樣:

# usernames.txt 
paul 
henry 
jim 
foo 

在你的腳本,你可以打開該文件,這樣,每次在一行寫着:

usernames_file = open('usernames.txt') 
for line in usernames_file: 
    # get rid of the <end line> character at the end of each line 
    username = line.strip() 
    print username 
+0

'strip()'(或'rstrip()')更常用於刪除(尾隨)空白字符而不是'line [: - 1]'。 – BioGeek 2014-09-26 12:54:39

+0

@BioGeek對,我調整了我的答案...... – 2014-09-26 13:47:42