while 回圈作業正常。
但是想知道是否有一種方法可以同時運行檔案中的所有行,然后通過相同的命令集運行變數而不是等待每個介面 3 秒?
while read line; do
before=$(snmpwalk -v2c -c public 1.1.1.1 .1.3.6.1.2.1.2.2.1.16.$line | awk '{print $4}')
sleep 3
after=$(snmpwalk -v2c -c public 1.1.1.1 .1.3.6.1.2.1.2.2.1.16.$line | awk '{print $4}')
res=$(bc <<< "$after-$before")
zxc=$(echo "$res * 8 * 100 / (1000000000 * 3) " | bc)
per=$(echo "scale=1; 100 * $zxc / (1000) " | bc)
done < intfile.txt
納克斯
uj5u.com熱心網友回復:
可以使用GNU的并行
將命令移動到單獨的檔案command.sh:
before=$(snmpwalk -v2c -c public 1.1.1.1 .1.3.6.1.2.1.2.2.1.16.$1 | awk '{print $4}')
sleep 3
after=$(snmpwalk -v2c -c public 1.1.1.1 .1.3.6.1.2.1.2.2.1.16.$1 | awk '{print $4}')
res=$(bc <<< "$after-$before")
zxc=$(echo "$res * 8 * 100 / (1000000000 * 3) " | bc)
per=$(echo "scale=1; 100 * $zxc / (1000) " | bc)
然后以 intfile.txt 作為輸入并行執行:
cat intfile.txt | parallel -j 5 'bash command.sh {}'
- : j標志設定將同時運行的作業數量
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/333642.html
上一篇:使用sed轉義兩次特殊字符
