【问题标题】:Get all connected IP´s on the Linux machine [closed]在 Linux 机器上获取所有连接的 IP [关闭]
【发布时间】:2013-02-01 08:56:18
【问题描述】:

最近我在一次采访中被问到一个我做不到的问题。有人对此有解决方案吗?

Grab all connected IP´s on the Linux machine
check every connected IP if TCP port 1706 is open

if its open > execute command.  CURL ‘http:// some address ’ 
Else do nothing.
program will check this every 60 minits



Plattform Linux Ubuntu Server 12. X64 / x32

C++ 中的 WAP

谢谢!!

【问题讨论】:

  • 您当然可以完成其中的某些部分。你有什么问题?
  • 问题是我上面提到的

标签: c++ linux ip-address tcp-port


【解决方案1】:

制作一个 bash 脚本。

逻辑:

使用netstat -natp(通过awk/sed过滤得到端口,然后grep)然后用一个简单的测试看看结果是否为空。如果是,请运行curl。

把它放在一个 cron 任务中。真的很简单。

编辑:

netstat 是一个实用程序,可以显示您计算机上的所有连接。 netstat -natp 显示您计算机上具有 tcp 套接字的程序列表。

sed 和 awk 用于文本格式。您可以使用它们列出特定的列。

grep 搜索输入以查找指定的字符串。

bash 允许基本逻辑,可以用来查看字符串是否为空。

cron 是一个 linux 进程,它安排命令在特定时间运行。

编辑#2:

您可以轮询 /proc/net/tcp,但既然 netstat 这样做并且格式很好,为什么还要麻烦?

【讨论】:

  • 对不起..我不明白。你能详细说明一下吗?
  • 那里,更新了它以更彻底地解释。
  • 是的,我考虑了 Olaf Dietsche 的回答,但后来意识到你的回答对我更有效
【解决方案2】:

在 Linux 中,您在 /proc/net 中查找文件并对其进行解析。

例如/proc/net/tcp中列出了TCP连接

head /proc/net/tcp

会显示类似这样的内容

  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode                                                     
   0: 00000000:0007 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 38148735 1 0000000000000000 100 0 0 10 -1                 
   1: 00000000:1F48 00000000:0000 0A 00000000:00000000 00:00000000 00000000   116        0 38923158 1 0000000000000000 100 0 0 10 -1                 
   2: 00000000:0CEA 00000000:0000 0A 00000000:00000000 00:00000000 00000000   120        0 12364094 1 0000000000000000 100 0 0 10 -1                 
   3: 0100007F:13AD 00000000:0000 0A 00000000:00000000 00:00000000 00000000  1000        0 26454267 1 0000000000000000 100 0 0 10 -1                 
   4: 0100007F:008F 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 5570 1 0000000000000000 100 0 0 10 -1                     
   5: 00000000:0050 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 27328173 1 0000000000000000 100 0 0 10 -1                 
   6: 0100007F:1913 00000000:0000 0A 00000000:00000000 00:00000000 00000000   116        0 38923868 1 0000000000000000 100 0 0 10 -1                 
   7: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 18983193 1 0000000000000000 100 0 0 10 -1                 
   8: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 38681424 1 0000000000000000 100 0 0 10 -1                 

然后您可以拆分线路,查找打开的连接并采取相应措施。查看netstat的来源了解更多信息。

【讨论】:

    猜你喜欢
    • 2012-11-27
    • 2012-09-04
    • 2011-06-10
    • 2011-07-13
    • 1970-01-01
    • 2012-10-30
    • 2022-01-26
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多