首页 > 解决方案 > ping ubuntu shell 脚本时出现“名称解析暂时失败”错误

问题描述

我正在尝试 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: Temporary failure in name解析度”。关于为什么会发生这种情况的任何想法。

标签: bashshubuntu-18.04

解决方案


您正在循环文件名;没有与服务器名称对应的 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/ ,并阅读您收到的错误消息。


推荐阅读