#python-3.x #command-line #tcp #nmap
Вопрос:
У меня есть скрипт на python для сканирования TCP. Я использую библиотеку python3_nmap, поэтому команда выглядит следующим образом:
import nmap3
nmap.nmap_syn_scan(self.ip ,"-p 443 -v -T4")
Каждый раз, когда мне нужно вводить свой пароль, как я могу изменить код, чтобы он не запрашивал у меня пароль?
- Мне не нужно изменять привилегии всего скрипта python, потому что я просто вызываю функцию внутри него в рамках робота, поэтому я должен каким-то образом игнорировать ввод пароля для этого особого подпроцесса!
Комментарии:
1. с помощью чего вы запускаете свой скрипт на Python
sudo
?2. @JanWilamowski Нет. каким-то образом мне нужно сделать это в сценарии, потому что я собираюсь запустить этот сценарий в рамках робота. Я не хочу вводить пароль.
Ответ №1:
Здесь вам нужна некоторая автоматизация. Pexpect — хороший выбор. Вы должны запустить свой скрипт python с соответствующими правами. Предоставление разрешения на выполнение может быть автоматизировано следующим образом:
import pexpect
child = pexpect.spawn('sudo python <path_to_your_python_script>') # make sure about environment
child.expect('password') # wait to read password string in terminal
child.sendline('<your_password_here>') # enter user password
Комментарии:
1. На самом деле мне не нужно запускать весь скрипт python, я вызову внутри него функцию, и эта функция выполняет некоторые подпроцессы, для которых необходимо ввести пароль, например, при сканировании TCP.
2. Вы имеете в виду, что есть модуль для сканирования, и вы хотите импортировать и вызывать некоторые конкретные процедуры из этого модуля в своем сценарии в качестве корневого. я прав? Как вызывается ваш скрипт?
3. ОК. У меня есть скрипт на python с различными методами внутри него, один из них выполняет сканирование tcp с помощью функции из библиотеки nmap3, для которой требуется привилегия root, с другой стороны, у меня есть файл робота, который вызывает этот метод. поэтому, когда я запускаю файл робота, он просит ввести пароль из-за этого сканирования tcp.