Выполнить команду, прочитав содержимое текстового файла - PullRequest
0 голосов
/ 15 марта 2020

Я хочу автоматизировать команду Linux, используя python. Команда:

smbmap -u robert -p p@ssw0rd -H 192.168.2.10

У меня есть список слов, который включает в себя возможные имена пользователей в каждой строке. Как я могу написать код, который выполняет команду, читая файл? Например, у меня есть список с именем «users.txt», который содержит:

robert
admin
administrator
guest

И он должен попытаться выполнить следующие действия, пока не найдет правильного пользователя и пароль:

smbmap -u robert -p p@ssw0rd -H 192.168.2.10
smbmap -u admin -p p@ssw0rd -H 192.168.2.10
smbmap -u administrator -p p@ssw0rd -H 192.168.2.10
smbmap -u guest -p p@ssw0rd -H 192.168.2.10

Спасибо.

1 Ответ

1 голос
/ 15 марта 2020

Это должно сработать:

import subprocess

# read in users and strip the newlines
with open('/tmp/users.txt') as f:
    userlist = [line.rstrip() for line in f]

# get list of commands for each user
cmds = []
for user in userlist:
    cmds.append('smbmap -u {} -p p@ssw0rd -H 192.168.2.10'.format(user))

# results from the commands
results=[]

# execute the commands
for cmd in cmds:
    results.append(subprocess.call(cmd, shell=True))

# check for which worked
for i,result in enumerate(results):
    if result == 0:
        print(cmds[i])

Редактировать: изменил путь к файлу, изменил на .format (), проверил результат == 0 (работает для s sh, пробует пароли)

Редактировать: забыл добавить оболочку = True

...