2014-09-26 3 views
0

Я пытаюсь написать сценарий в python, который принимает входные данные из файла, который является списком имен пользователей, и запускает команду VRFY для сервера smtp. Ниже приведен сценарий.получить вход в скрипт 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, спасибо Доминик. Sk11, пожалуйста, сообщите мне, что делает следующий код. для u в пользователях: user = u.strip() – daironman

+0

'strip()' в основном удаляет пробелы из строки. Проверьте [docs] (https://docs.python.org/2/library/stdtypes.html). Когда вы читаете строки из файла, все записи будут содержать '' \ n'', 'strip()' будут удалять все это. – sk11

ответ

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

вы можете открыть файл в Python с помощью open(). Я предполагаю, что ваш текстовый файл полных имен пользователей выглядит следующим образом:

# 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()') чаще используется для удаления (trailing) пробельных символов вместо 'line [: - 1]'. – BioGeek

+0

@BioGeek вправо, я скорректировал свой ответ ... –

Смежные вопросы