批量Ping執行Bash指令碼

2022-07-24 10:15:10 字數 3007 閱讀 5214

#!/bin/bash

# ping batch script

# 連線超時時間

tmout=3

# 最大執行緒數

max_thread=4000

# 保留記憶體大小

min_mem=400

# 預設ip配置,可通過 -r ip-ip指定,格式: ping_batch.sh -r 192.168.1.1-192.168.2.254

# ip字首

ip_preffix="

192.168

"# 16位主機範圍

192.168.1-192.168.2

ip_network_range="

1-2"

# ping範圍

192.168.1.1-192.168.2.254

ip_host_range="

1-254

"# ping指令碼

ping_script='

ping -c 1 $.$.$ &> /dev/null;[[ $? -eq 0 ]] && echo -e "\033[32m$.$.$ yes\033[0m" || echo -e "\033[32m$.$.$ no\033[0m" &>/dev/null

'# ip格式錯誤提示

function

ip_format_error()

# 傳入引數ip格式判斷及格式化

case"$1

"in'-r

')shift

ip_start=`echo $1|awk -f'-'

''`ip_end=`echo $1|awk -f'-'

''`echo $ip_start|grep -e "

^(([0-9]|[1-9][0-9]|1[0-9]|2[0-4][0-9]|25[0-5])\.)([0-9]|[1-9][0-9]|1[0-9]|2[0-4][0-9]|25[0-5])$

" &>/dev/null

[[ $? -eq 0 ]] ||ip_format_error

echo $ip_end|grep -e "

^(([0-9]|[1-9][0-9]|1[0-9]|2[0-4][0-9]|25[0-5])\.)([0-9]|[1-9][0-9]|1[0-9]|2[0-4][0-9]|25[0-5])$

" &>/dev/null

[[ $? -eq 0 ]] ||ip_format_error

ip_start_preffix=`echo $ip_start|awk -f'.'

''`ip_end_preffix=`echo $ip_end|awk -f'.'

''`if [[ "

$ip_start_preffix

" == "

$ip_end_preffix"]]

then

ip_preffix=$ip_start_preffix

else

echo -e "

\033[31m ip 192.168.1.1-192.168.2.1\n192.168==192.168\nsubnet is 16 bits.\033[0m

"exit

fiip_network_range_start=`echo $ip_start|awk -f'.'

''`ip_network_range_end=`echo $ip_end|awk -f'.'

''`ip_host_range_start=`echo $ip_start|awk -f'.'

''`ip_host_range_end=`echo $ip_end|awk -f'.'

''`ip_network_range="

$-$"

ip_host_range="

$-$"

;;*)

echo -e "

\033[31m執行預設配置\033[0m";;

esac

# 模擬線程,超過配置值,等待

function

thread_wait()

# 記憶體保留檢查,小於設定值則等待

function

free_check()

') -lt min_mem ]]

then

sleep2;

free_checkfi}

# 格式化ip並執行ping指令碼

for ip_network in `seq $(echo $ip_network_range|awk -f '-'

'') $(echo $ip_network_range|awk -f '-'

'')`do

thread_wait

for ip_host in `seq $(echo $ip_host_range|awk -f '-'

'') $(echo $ip_host_range|awk -f '-'

'')`do

free_check

(eval "$

") &

done

done

#!/bin/bash

# ping batach

ip_prefix="

192.168

"ip_network_range="

1-2"

ip_network_host_range="

1-254

"function

ping_batch()

for i in `seq $(echo $ip_network_range|awk -f '-'

'') $(echo $ip_network_range|awk -f '-'

'')`;do

for j in `seq $(echo $ip_network_host_range|awk -f '-'

'') $(echo $ip_network_host_range|awk -f '-'

'')`;do ping_batch "

$.$.$

";done;done

批量ping指令碼

ping c 1 i表示 只pin g一次。命令解釋 c計 數 co unt 1表示 一次,i 表示只ping一次。命令解釋 c計數 count 1表示一次,i表示只pi ng一次 命令解 釋 c 計數 c ount 1表 示一次,i是ip。grep loss 通過管道的方式查詢ping後的結果含有...

編寫指令碼批量 ping

如果有很多 ip 或者網域名稱,我們要判斷哪些能 ping 通,採用自動化指令碼特別方便。先看指令碼,如下所示 bin bash 功能,ping檔案ip.lst中的ip,成功的輸出到ping ok.lst檔案,失敗的輸出到ping fail.lst檔案。10.1.1.1呼叫該指令碼 ping ip....

bash指令碼併發執行

目錄背景 採用gnu的paralle程式 並行化方法 wait 缺點 程序數可控的並行化方法 命名管道 在linux下執行作業時,經常會遇到以下情形 有大量作業需要執行,完成每個作業所需要的時間也不是很長.如果我們以序列方式來執行這些作業,可能要耗費較長的時間 若採用並行方式執行則可以大大節約執行時...