AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 13780
Accepted
cop1152
cop1152
Asked: 2009-05-29 05:52:11 +0800 CST2009-05-29 05:52:11 +0800 CST 2009-05-29 05:52:11 +0800 CST

如何在不使用 ping 的情况下确定机器是否在线?

  • 772

我曾经使用可以 ping 或在机器上运行端口扫描的应用程序,即使机器被配置为不允许它。

我目前正在尝试 ping 我们 WAN 上的远程机器,但我已将机器配置为不允许 ping。我可以使用类似于 ping 的东西吗?

同样,这是一台位于另一个城市的机器,它是我们 wan 的一部分。

ping
  • 16 16 个回答
  • 82147 Views

16 个回答

  • Voted
  1. David Rz Ayala
    2018-07-24T10:20:58+08:002018-07-24T10:20:58+08:00

    对容器有用的答案

    Ping 是 ICMP,如果你阻止了 ICMP,你就无法 ping。

    如果您接受 TCP/UDP 连接,您可能仍然能够测试 TCP 或 UDP 端口。

    如果您在缺少 ping、nc、telnet 和其他工具的容器上运行测试,您可以使用这个技巧:

    (echo >/dev/tcp/${host}/${port}) &>/dev/null && echo "open" || echo "closed"
    

    这将尝试通过设备通过 tcp/udp 进行连接(哇,我知道),如果端口打开则回显“打开”,如果端口关闭则回显“关闭”。

    在这种情况下,它会在回显“关闭”之前挂起一段时间。

    • 23
  2. Brent
    2009-05-29T05:57:31+08:002009-05-29T05:57:31+08:00

    您可以 telnet 到机器上打开的 tcp 端口。例如,如果这台机器是 Web 服务器,并且开放了 80 端口,那么:

    telnet ip.ad.dre.ss 80
    

    这甚至适用于加密端口(尽管您将无法理解数据)

    其他一些可以尝试的端口是:

    • 443 用于 https 服务器
    • 22 用于 SSH

    ( Linux 机器上的/etc/services中有一个端口/服务列表)

    • 18
  3. user640
    2009-05-29T06:01:24+08:002009-05-29T06:01:24+08:00

    在远程机器上运行 SNMP 代理,并使用管理器从标准 MIB 中读取其中一个值。

    • 4
  4. Best Answer
    mrTomahawk
    2009-05-29T06:05:44+08:002009-05-29T06:05:44+08:00

    如果您使用 XP/2003+(包括 Vista/2008/7),那么您可以使用Win32_PingStatus。运行脚本代码的机器是唯一需要 XP/2003+ 的系统,它的工作方式与使用 Ping.exe 一样,只是它不使用 ping.exe,因此它应该成为您的安全设置的漏洞不允许执行 ping.exe。

    strComputer = "192.168.1.1"
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colItems = objWMIService.ExecQuery _
        ("Select * from Win32_PingStatus " & _
            "Where Address = '" & strComputer & "'")
    For Each objItem in colItems
        If objItem.StatusCode = 0 Then 
            WScript.Echo "Reply received."          
        End If
    Next
    

    有关如何使用 Win32_PingStatus 的更多信息,请参阅脚本专家文章:

    http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept04/hey0914.mspx

    • 4
  5. hayalci
    2009-05-29T15:03:09+08:002009-05-29T15:03:09+08:00

    如果您可以访问与目标计算机位于同一 LAN 上的另一台计算机,则可以使用arping。

    Arping 通过发送针对机器的 ARP 数据包来工作,这非常有效,因为如果你想使用网络,你不能阻止 arp 数据包(嗯,你可以在任何地方设置静态 arp 表:D)但缺点是你必须在与您的 arping 目标相同的 LAN。

    • 4
  6. MVnD3X
    2018-04-05T19:29:18+08:002018-04-05T19:29:18+08:00

    解决此问题的简单方法是使用 netcat 实用程序。这种情况的唯一先决条件是应该知道至少一个在该远程计算机上打开的端口。

    nc -nv ip_address 端口号

    上面的命令将给出一个结果,这将确定所述端口是否打开,从而确定机器的可用性

    • 4
  7. Xerxes
    2009-05-29T06:47:35+08:002009-05-29T06:47:35+08:00

    如果您没有防火墙和路由器,即,如果您与您要检查的主机位于同一网段 - 以上大多数解决方案都有点详尽恕我直言。

    连接到哪个端口并不重要,事实上,如果您连接到一个不太可能运行服务的端口,您可以在不被发现的情况下完成工作。

    如何?

    您可以使用任何您喜欢的工具,但我们可以使用 telnet...

    % telnet <host> 313373
    Trying 10.211.55.3...
    telnet: connect to address 10.211.55.3: Connection refused
    telnet: Unable to connect to remote host
    %
    

    这应该立即发生,除非主机正在丢弃数据包。实际发生的是主机上的 TCP/IP 堆栈正在向您发送回一个设置了 RST 位的 TCP 段 - 即终止您的 SYN 数据包。

    您收到一个 RST 数据包的事实意味着在另一端确实有一个主机,并且作为奖励 - 您这样做未被检测到(TCP/IP 没有上层应用程序可以谈论这个连接) .

    然而,我可能会使用 scapy 之类的东西,而不是 telnet,写一些寻找 RST 标志的东西,然后让你知道。

    只是为了完成此操作,如果您尝试的 IP 上没有主机 - 它会挂起一段时间,并且超时 -如果接收主机具有带丢弃过滤器的防火墙,则会发生同样的事情。

    如果涉及防火墙,那么正如其他人所建议的那样,使用nmap诸如此类的工具。

    • 3
  8. Brettski
    2009-05-29T05:57:35+08:002009-05-29T05:57:35+08:00

    机器上有可用的服务吗?查看机器是否存在的一种方法是使用 telnet 客户端连接到它,但更改您需要访问的端口。

    因此,假设机器正在运行 MS SQL,默认情况下在端口 1433 上运行。您使用以下命令

    telnet machine-name-address 1433
    

    如果 Telnet 连接机器启动并运行,并不意味着它运行正常,但仍在监听该端口

    • 2
  9. Vish
    2009-05-29T06:02:53+08:002009-05-29T06:02:53+08:00

    我在seq 1 65535;做 tcpconnect -v 远程主机 $i ;完毕

    • 1
  10. Dan
    2009-05-29T06:17:55+08:002009-05-29T06:17:55+08:00

    nmap -T5 -sS -P0 ho.st.ip.addr 这将查看该机器上可用的端口。如果您在 Windows 上运行或无法访问 linux 机器,建议安装 cygwin。

    • 1

相关问题

  • OS X:无法解析 Windows 机器名称 [关闭]

  • 非对称 ping 时间但恒定的文件 xfer 时间?

  • 可以通过 IP ping 机器,但不能通过名称 [关闭]

  • 在 Windows Server 防火墙中启用 Ping?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve