ホームページ >バックエンド開発 >Python チュートリアル >Pythonを使用して特定のネットワークセグメントの使用済みIPと未使用IPを検出する方法
先人たちのブログから学び、自分で多くのことを追加しました。
サブプロセスモジュールを使用します
>>> import subprocess
>>> p = subprocess.Popen('df -h',stdin=subprocess.PIPE,stderr =subprocess.PIPE,shell=True)
#wait()関数でコマンド実行結果のリターンコードを取得
>>> p.wait()
0
#Get read() メソッドによるコマンド出力結果 (標準出力)
>>> p.stdout.read()
'Filesystem Size Used Avail Use% Mounted onn/dev/sda1 18G 11G 5.8G 65 % /ntmpfs 495M 0 495M 0% /dev/shmn'
#read() メソッドを通じてコマンド エラー出力を取得します
>>> p.stderr.read()
''
#空で、エラーがないことを示します。 Output
#Get error Output
>>> p = subprocess.Popen('ls /etc/password', stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True,close_fds=True)
>>> p.stderr.read()
'ls: /etc にアクセスできません/password: そのようなファイルまたはディレクトリはありませんn '
@エラー出力を取得する他の方法には、read()、readline()、readlines()、close()、write()、writelines() などがあります。 #!/usr/bin/env
python# by lijiajun
import re,subprocess,os,sys
net_region='192.168.3'
print("#### ########################################## ###### ###")print("#このスクリプトは主に ping に基づいており、特定のネットワーク セグメントの使用済み IP と未使用 IP をテストします #")
print("#これらを / に保存しますtmp/alive_ip.txt それぞれ # ")
print("#AND/tmp/dead_ip ############################## #")
print(" ")
ifos.path.isfile( "/tmp/alive_ip.txt"):
os.popen("mv /tmp/alive_ip.txt /tmp/alive_ip. txt.old") print "このファイルで使用されている IP を確認できます: /tmp /alive_ip.txt"
if os.path.isfile("/tmp/dead_ip.txt"):
os.popen ("mv /tmp/dead_ip.txt /tmp/dead_ip.txt.old")
print "このファイルで未使用の IP を確認できます: /tmp/dead_ip.txt"
print(" ")
dead_ip =0
alive_ip=0
def check_alive(ip,
count,
timeout):グローバルalive_ipグローバルdead_ip
cmd='ping -c %d -w %d %s' % (カウント、タイムアウト、ip)
p=subprocess.Popen(cmd,
stdin= subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
result =p.stdout.read()
regx=re.findall('100% パケット損失',result)
if len(regx)==0:
print("
check_alive(ip,1,1)
print (" ")
print "final Dead_ip 数は %d" % Dead_ip
print "最終のalived_ip 数は %d" % live_ip
以上がPythonを使用して特定のネットワークセグメントの使用済みIPと未使用IPを検出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。