-3

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

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

谢谢!!

4

2 回答 2

1

制作一个 bash 脚本。

逻辑:

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

把它放在一个cron作业中。简单的东西,真的。

编辑:

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

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

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

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

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

编辑#2:

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

于 2013-02-16T13:21:16.840 回答
0

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

例如,TCP 连接列在/proc/net/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更多信息的来源。

于 2013-02-16T13:30:11.027 回答