У меня возникают проблемы с вызовом переменной в Python, которую я устанавливаю как «глобальный».Невозможно вызвать глобальную переменную python вне функции
Я устанавливаю переменную в начале моего скрипта, а затем изменяю переменную внутри функции, а в конце моего сценария я затем повторяю значение переменной и значение, которое я устанавливаю переменная to в функции, похоже, не выполняет функцию.
Сценарий (Простой сканер портов для сканирования первых 1000 портов ПК). Кроме того, причина, по которой я устанавливаю сценарий с процессами, заключается в том, что я одновременно вызываю несколько портовых разделов ... однако я не включил все функции, так как это довольно длинный скрипт.
#!/usr/bin/env python
import socket
import subprocess
import sys
from datetime import datetime
from multiprocessing import Process
import random
import datetime
# Clear the screen
#subprocess.call('clear', shell=True)
# Ask for input
#remoteServer = raw_input("Enter a remote host to scan: ")
remoteServer = sys.argv[1]
remoteServerIP = socket.gethostbyname(remoteServer)
global openports
openports = []
def ports1():
global openports
for port in random.sample(range(1,1000), 999):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(.01)
result = sock.connect_ex((remoteServerIP, port))
if result == 0:
openports.append(format(port))
sock.close()
if __name__ == '__main__':
p1 = Process(target = ports1)
p1.start()
p1.join()
print openports
Я знаю, что переменная становится установлен, потому что если я эхо переменной openports
внутри функции она возвращает правильные данные, однако, когда я повторяю это после того, как я вызываю функцию во имя == в главном разделе, он возвращается как пустая строка.
Я добавил 'print openports' в первую строку цикла' for' в функции 'ports1', и он всегда' [] '- я вызвал ваш скрипт с вашим аргументом' google.com'. – S4M