{"id":261,"date":"2016-05-11T16:41:25","date_gmt":"2016-05-11T08:41:25","guid":{"rendered":"http:\/\/www.5x44.cn\/?p=261"},"modified":"2017-07-27T15:52:19","modified_gmt":"2017-07-27T07:52:19","slug":"%e6%9f%a5%e7%9c%8btc%e4%b8%ad%e6%9f%90%e4%b8%aaip%e7%9a%84%e4%bd%bf%e7%94%a8%e6%83%85%e5%86%b5","status":"publish","type":"post","link":"https:\/\/www.5x44.cn\/?p=261","title":{"rendered":"\u67e5\u770btc\u9650\u901f\u4e2d\u67d0\u4e2aip\u6216\u7f51\u6bb5\u7684\u4f7f\u7528\u60c5\u51b5"},"content":{"rendered":"<p><code>#! \/usr\/local\/bin\/python3<\/code><br \/>\n<code>import re<\/code><br \/>\n<code>import subprocess<\/code><br \/>\n<code>import sys<\/code><br \/>\n<code>'''<\/code><br \/>\n<code>data_forward=sys.argv[1]<\/code><br \/>\n<code>ip_addr=sys.argv[2]<\/code><br \/>\n<code>'''<\/code><br \/>\n<code>def tc_ip2id(data_forward):<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 command='tc'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg1='-s'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg2='-d'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg3='filter'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg4='show'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg5='dev'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 if data_forward.lower() == 'down' :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 arg6='enp11s0f0'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 else:<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 arg6='enp11s0f1'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 result = subprocess.run([command,arg1,arg2,arg3,arg4,arg5,arg6], stdout=subprocess.PIPE, universal_newlines=True )<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 result_list = result.stdout.split(sep='filter')<\/code><\/p>\n<p><code>#define regular express about ip and id<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 ip_re = re.compile(r'([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})(?=\/ffffffff)')<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 id_re = re.compile(r'\\d:\\d{4}')<\/code><\/p>\n<p><code>#\u751f\u6210ip\u548cid\u7684\u5bf9\u5e94\u5b57\u5178<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 global ip_id_dict<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 ip_id_dict={}<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 for i in result_list :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 #\u5f53\u524d\u5341\u516d\u8fdb\u5236ip<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if ip_re.search(i) != None :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cur_ip_tuple = ip_re.search(i).groups()<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 #\u8f6c\u5b58\u6210\u5341\u8fdb\u5236Ip<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ip_dec_str=''<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for j in cur_ip_tuple :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ip_dec_str += str(int(j,16))+'.'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ip_dec_str=ip_dec_str[:-1]<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #\u5411\u5b57\u5178\u4e2d\u6dfb\u52a0ip\u548cid\u5bf9\u5e94\u5173\u7cfb<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ip_id_dict[ip_dec_str]=id_re.search(i).group(0)<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #\u6e05\u7a7a\u4e4b\u524d\u7684\u503c<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ip_dec_str='' <\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else:<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 continue<\/code><\/p>\n<p><code>#\u68c0\u67e5\u5355\u4e2aIP\u7684\u6d41\u91cf\u60c5\u51b5<\/code><br \/>\n<code>def tc_check_ip(data_forward, ip_addr):<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 ip_dec_str=''<\/code><br \/>\n<code>#\u8f6c\u6362\u8981\u67e5\u627e\u5230IP\u5230\u5b57\u7b26\u4e32<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 if ip_addr != None :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for i in re.search(r'(\\d?\\d?\\d).(\\d?\\d?\\d).(\\d?\\d?\\d).(\\d?\\d?\\d)',ip_addr).groups() :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ip_dec_str+=i+'.'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ip_dec_str=ip_dec_str[:-1]<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 else:<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 print(\"No ip address\")<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 command='tc'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg1='-s'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg2='-d'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg3='class'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg4='show'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg5='dev'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 if data_forward.lower() == 'down' :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 arg6='enp11s0f0'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 else:<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 arg6='enp11s0f1'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg7='classid'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 result = subprocess.run([command,arg1,arg2,arg3,arg4,arg5,arg6,arg7,ip_id_dict[ip_dec_str]], stdout=subprocess.PIPE, universal_newlines=True)<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 return result.stdout<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0<\/code><br \/>\n<code>#\u68c0\u67e5\u7f51\u6bb5\u5185\u6bcf\u4e2aIP\u7684\u7f51\u7edc\u4f7f\u7528\u60c5\u51b5\u6392\u540d<\/code><br \/>\n<code>def tc_check_network(data_forward, network_addr):<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 ip_dec_str=''<\/code><br \/>\n<code>#\u8f6c\u6362\u8981\u67e5\u627e\u5230IP\u5230\u5b57\u7b26\u4e32<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 if network_addr != None :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for i in re.search(r'(\\d?\\d?\\d).(\\d?\\d?\\d).(\\d?\\d?\\d).(?=\\d?\\d?\\d)',network_addr).groups() :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ip_dec_str+=i+'.'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ip_dec_str=ip_dec_str[:-1]<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 else:<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 command='tc'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg1='-s'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg2='-d'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg3='class'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg4='show'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg5='dev'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 if data_forward.lower() == 'down' :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 arg6='enp11s0f0'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 else:<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 arg6='enp11s0f1'<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 result = subprocess.run([command,arg1,arg2,arg3,arg4,arg5,arg6], stdout=subprocess.PIPE, universal_newlines=True)<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 result_list = result.stdout.split(sep='class')<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 #\u67e5\u8be2\u7684\u7f51\u6bb5IP\u5b58\u4e8e\u6b64<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 network_ip=[]<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 for i in result_list:<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for j in range(1,254):<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if re.search(r'(?&lt;=htb )(\\d:\\d{4})',i) == None :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if\u00a0 re.search(r'(?&lt;=htb )(\\d:\\d{4})',i).group() == ip_id_dict[ip_dec_str+'.'+str(j)] :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #\u5c06IP\u548ctokens\u52a0\u5165\u5230\u5217\u8868\u4e2d<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try:<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 network_ip.append((ip_dec_str+'.'+str(j), int(re.search(r'(?&lt;=tokens: )(-?\\d?\\d?\\d?\\d?\\d?\\d?)',i).group())))<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 except ValueError:<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 print(i)<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else:<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 continue<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 #\u5bf9network_ip\u8fdb\u884c\u6392\u5e8f<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 network_ip.sort(key=comp_func)<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 return network_ip<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0<\/code><br \/>\n<code>def comp_func(sth):<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 return sth[1]<\/code><br \/>\n<code>'''<\/code><br \/>\n<code>\u7528\u6cd5 command down|up IP_ADDRESS|NETWORK_ADDRESS<\/code><br \/>\n<code>'''<\/code><br \/>\n<code>if __name__=='__main__' :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg_forward = sys.argv[1]<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 arg_ip = sys.argv[2]<\/code><code><\/code><br \/>\n<code>\u00a0\u00a0 \u00a0<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 tc_ip2id(arg_forward)<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 if re.search(r'(?&lt;=\\.)(\\d?\\d?\\d)$',arg_ip) != None :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if int(re.search(r'(?&lt;=\\.)(\\d?\\d?\\d)$',arg_ip).group()) == 0 :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 print(tc_check_network(arg_forward,arg_ip))<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else :<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 print(tc_check_ip(arg_forward, arg_ip))<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>#! \/usr\/local\/bin\/python3 import re import subprocess import sys &#8221;&#8217; data_forwar&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.5x44.cn\/?p=261\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,15],"tags":[16],"class_list":["post-261","post","type-post","status-publish","format-standard","hentry","category-it","category-python3","tag-tc"],"_links":{"self":[{"href":"https:\/\/www.5x44.cn\/index.php?rest_route=\/wp\/v2\/posts\/261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.5x44.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.5x44.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.5x44.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.5x44.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=261"}],"version-history":[{"count":3,"href":"https:\/\/www.5x44.cn\/index.php?rest_route=\/wp\/v2\/posts\/261\/revisions"}],"predecessor-version":[{"id":264,"href":"https:\/\/www.5x44.cn\/index.php?rest_route=\/wp\/v2\/posts\/261\/revisions\/264"}],"wp:attachment":[{"href":"https:\/\/www.5x44.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.5x44.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.5x44.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}