#Python3 subprocessでPingコマンドの出力結果をAWKしたりして欲しい値を出しています。
結果バイト列になっています。タプル型のバイト列にになっている出力結果を文字列に変換したいです。
お力沿いお願いいたします。
[出力結果]
(b'0.086\n', b'') <class 'tuple'> (b'0.855\n', b'') <class 'tuple'>
[理想出力結果]
0.086 0.855
python3
1import os 2import sys 3import argparse 4import subprocess 5 6class Ping(object): 7 def __init__(self, hosts): 8 for host in hosts: 9 # pingコマンド 10 p1 = subprocess.Popen(["ping", "-c", "2", host],stdout=subprocess.PIPE,stderr=subprocess.PIPE) 11 p2 = subprocess.Popen(["grep", "rtt"],stdin=p1.stdout,stdout=subprocess.PIPE,stderr=subprocess.PIPE) 12 p3 = subprocess.Popen(["awk", "-F", '/', '{print $4}'],stdin=p2.stdout,stdout=subprocess.PIPE,stderr=subprocess.PIPE) 13 p4 = subprocess.Popen(["tr", "-d", 'mdev ='],stdin=p3.stdout,stdout=subprocess.PIPE,stderr=subprocess.PIPE) 14 15 p1.stdout.close() 16 p2.stdout.close() 17 p3.stdout.close() 18 out = p4.communicate() 19 print(out) 20 print(type(out)) 21def main(): 22 # 引数の処理 23 parser = argparse.ArgumentParser(description='Ping') 24 parser.add_argument('-g', '--graph', help='グラフの名前を設定') 25 parser.add_argument('-i', '--ipaddress', nargs='*', help='複数の場合はスペースで区切る') 26 27 args = parser.parse_args() 28 29 # pingホスト 30 hosts = args.ipaddress 31 32 # ping試験 33 Ping(hosts) 34 35if __name__ == '__main__': 36 main()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/10 07:13