ping命令在ping通或者不通的時候,大概是下面兩個情況
技術棧使用了 flask框架和redis
# 儲存ping資料的redis 1號庫
redis_sh = strictredis(host=
'127.0.0.1'
, port=
6379
, decode_responses=
true
, db=1)
defflush_sh_redis()
:# 清空redis 1號庫
redis_sh.flushdb(
)def
sh(command, ip)
: p = subprocess.popen(command, shell=
true
, stdout=subprocess.pipe, stderr=subprocess.stdout)
not_ping =
"ping %s (%s) 56(84) bytes of data."
%(ip, ip)
flag =
0# 自定義的返回值--避免ping失敗無資料返回
num =
1# 每一行ping結果標識 (key)
redis_sh.
set(
"sh1"
, not_ping +
"\n"
) row =
1for line in
iter
(p.stdout.readline, b''):
line = line.rstrip(
).decode(
'utf8'
)if flag ==0:
# ping操作有結果 第一次進入
redis_sh.
set(
"sh1"
, line +
"\n"
)# 將自定義的返回值覆蓋
flag =
1 num +=
1# key 值加一
row =
2else
:if row ==2:
"sh1"
, line +
"\n"
) row =
1else
: redis_sh.
set(
"sh"
+str
(num)
, line +
"\n"
)print
(num, line)
num +=
1 redis_sh.
set(
"sh"
+str
(num)
,"over"
)# over表示當前ping操作結束
defget_sh
(num)
: result = redis_sh.get(
"sh"
+ num)
return result
@diagnosis.route(
"/ping"
, methods=
["post"])
defping()
:# 執行ping命令
flush_sh_redis(
)# 每次請求ping時,清空指定redis某個庫
ip = request.form.get(
"ip")if
not ip:
return jsonify(status=
4004
, msg=
"ip引數不能為空"
)# 中文校驗
a = re.match(r"^[\x00-\xff]+$"
, ip)
ifnot a:
sysconfig_log.info(
"ping測試失敗"
)return jsonify(status=
4004
, msg=
'ping命令不能包含中文'
) command =
"ping -c 5 -w 10 %s"
% ip
try:# 起執行緒執行ping命令
task = threading.thread(target=sh, args=
(command, ip)
) task.start(
)except exception as e:
print
(e)return jsonify(status=
4004
, msg=
'ping命令執行失敗'
)return jsonify(status=
0, msg=
"開始進行ping測試"
)@diagnosis.route(
"/get_ping_result"
, methods=
["get"])
defget_ping_result()
:# 獲取ping結果
# num引數,表示前端第幾次獲取資料,num從1開始,前端在呼叫時,如果當前num值沒有獲取到資料,那麼num值不變,繼續呼叫該介面,獲取當前num值得資料,直到拿到資料為止
num = request.args.get(
"num"
) num =
str(num)
result = get_sh(num)
if result ==
"over"
:return jsonify(status=
2, msg=
"over")if
not result:
return jsonify(status=
1, msg=
"暫無資料"
)# 請求的資料暫時沒有生成,繼續使用當前num值發出請求
result = result.split(
"\n"
) result.pop(-1
) data =
return jsonify(data=data, status=
0, msg=
"ping測試成功"
)
IVRE中如何分析實時獲取的資料報?
ps 要是有哪位大牛知道怎麼進行自動化的操作,小弟跪求告知,多謝 ivre對資料的分析有兩種方法,一種是基於bro,另一種是使用argus的log或者netflow的log,我採用的是第一種方法,因為argus的log我之前沒有遇到過,而.pcap的檔案因為wireshark的流行,我想大家都會知道...
利用Python在PI中尋找生日
1 使用y cruncher工具得待pi的億萬位的txt文件 2 很簡單,首先是得到可操作的文件,然後提示使用者輸入要查詢的生日,預設的格式是year mouth day,例如94 01 01,先檢查輸入的生日格式是否正確,要是正確的話就從文件中進行查詢,若查詢到就返回其存在的個數,從查詢的結果來看...
如何通過python計算圓周率PI
如下 def pi n pi 0 for k in range n pinforkrptb 程式設計客棧 1 pow 16,k 4 8 k 1 2 8 k 4 1 8 k 5 1 8 k 6 return pi import time scale 20 print 執行開始 center scale...