Warm tip: This article is reproduced from serverfault.com, please click

bash-ping ubuntu shell脚本时出现“名称解析临时失败”错误

(bash - "Temporary failure in name resolution" error on ping ubuntu shell scripting)

发布于 2020-12-15 08:06:41

我正在尝试ping IP地址并存储发送到IP地址的5个(例如)数据包的平均往返时间。数据包的数量值存储为变量,而IP地址来自文件。这是我的代码

for line in $(ls -1 "$file"); 
do
    avg=$(ping -c $COUNT $line | awk '/avg/ {split($0,arr,"/"); print arr[5]}')
    echo "$avg"
done

当我在终端中运行ping命令并添加数据包计数和IP地址时,该命令可以工作并返回该值,但是当我尝试运行该文件时,它将返回错误消息“ ping:file:名称暂时失败”解析度”。关于为什么发生这种情况的任何想法。

  • 使用Ubuntu 18.04操作系统
  • 使用Shell脚本(.sh文件类型)
Questioner
user14810911
Viewed
11
tripleee 2020-12-15 16:22:14

你正在遍历文件名;没有与服务器名称相对应的IP地址file

你不应该一开始就使用for循环,并且绝对不要在脚本中使用ls任何循环,当然,你还希望避免无用echo循环

while IFS= read -r line; do
    ping -c "$COUNT" "$line" | awk '/avg/ {split($0,arr,"/"); print arr[5]}'
done<"$file"

展望未来,在寻求人工帮助之前,请尝试http://shellcheck.net/并阅读你收到的错误消息。