「グローバル」に設定している変数を Python で呼び出す際に問題が発生しています。
スクリプトの先頭で変数を設定し、関数内で変数を変更しています。スクリプトの最後で、変数の値と、変数に設定している値を機能を実行していないようです。
スクリプト (PC の最初の 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
、 name==main セクションで関数を呼び出した後にエコーすると、空として返されますストリング。