小编ICE*_*ICE的帖子

在 Linux 上 Ping 服务器/域并捕获其 IP

使用 Windows,即使没有收到回复,您也可以 ping 给定的域名并将 IP 作为变量捕获。我相信命令看起来像这样:

ping domain.com
for /f "tokens=1,2 delims=[]" %%A in ('ping /n 1 /w 1 domain.com ^| find "Pinging"') do set ipaddress=%%B"`
Run Code Online (Sandbox Code Playgroud)

这基本上就是我想要做的,但是在 bash 脚本而不是批处理文件中。我偶然发现了很多非常接近的问题,但并不是我想要的。我似乎无法找出解决此问题的最佳方法。

有任何想法吗?

bash ping ip

7
推荐指数
1
解决办法
9494
查看次数

LINUX Ping 主机,失败时显示错误

我正在编写一个 bash 脚本来 ping 给定的主机名,并显示主机是否处于活动状态(显示一条简单的消息。)应该很容易,但令人头疼。这是我到目前为止所拥有的:

    echo & echo "DOI (Domain):" &&read input 
    ip=$(ping -c 1 $input | gawk -F'[()]' '/PING/{print $2}') 
    if [ $? -eq 0 ]; then  
        echo "$ip is up";  
    else   
        echo "host is down";  
    fi  
    sleep 60  
Run Code Online (Sandbox Code Playgroud)

这是输出:
Successful ping (& reply),它响应:

    74.125.226.119 is up
Run Code Online (Sandbox Code Playgroud)

但是,在没有收到回复时,它仍然响应:

    ping: unknown host google.ccccaa 
    is up
Run Code Online (Sandbox Code Playgroud)

而不是回声“主机已关闭”

显然,我忽略了一些东西。我讨厌问这样的问题,我确信答案已经藏在这里的某个地方,但我再次陷入停滞,找不到我要找的东西。我什至不确定我在寻找什么。

编辑:解决了!非常感谢您的有用建议!

这是决赛:

    echo & echo "DOI (Domain):" &&read input    
    output=$(ping -c 1 "$input" 2>/dev/null)  
    if [ $? -eq 0 ]; then  
       ip=$(printf '%s' …
Run Code Online (Sandbox Code Playgroud)

linux ping hosts

4
推荐指数
2
解决办法
6098
查看次数

标签 统计

ping ×2

bash ×1

hosts ×1

ip ×1

linux ×1