bash - 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解析度”。关于为什么会发生这种情况的任何想法。
- 使用 Ubuntu 18.04 操作系统
- 使用 Shell 脚本(.sh 文件类型)
解决方案
您正在循环文件名;没有与服务器名称对应的 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/ ,并阅读您收到的错误消息。
推荐阅读
- android - 为什么在“空中”创建的锚点在 ARCore 中不是静态的
- c++ - 可以构造一个空的 std::optional
调用 T 的默认构造函数? - c++ - 是否有理由在 C++ 中转发声明 main
- sql - 无法阻止某些用户删除表
- c# - 如何在设计师的“收藏编辑器窗口”中制作可编辑的对象?
- python - Django中的外键值分配
- c++ - C++ 运算符重载。为什么我不能正确地对其进行原型制作
- javascript - 问题面板;AddEventListener 不工作(cookies 问题)
- ios - Firebase 动态链接页面未在应用中打开 (iOS)
- javascript - html中的可编辑表格和所做的更改也将保存在电子表格中