telnet测试端口是否通_Ansible: 使用 python 实现 telnet 端口测试功能

telnet测试端口是否通_Ansible: 使用 python 实现 telnet 端口测试功能_第1张图片

问题背景

在 ansible 中 我们常常需要测试端口是否能通

我们常常使用如下命令来测试某个服务器的端口是否能工作。

telnet www.devnet.sg 443

如果是使用 windows powershell 我们常常可以使用下面的命令:

PS C:> Test-NetConnection -ComputerName www.devnet.sg -Port 443

但是如果在企业环境中我们只能使用 GUI 来运行 ansible tower 或者是 ansible awx,甚至只能使用单独的 isolated node 的情况下,我们将无法使用 telnet 模块来进行测试

解决方案

我们创建如下的 ansible playbook

[alick@DevNet]# tree
.
|-- README.md
|-- main.yml
`-- roles
    `-- test_conn
        |-- README.md
        |-- files
        |   `-- test_conn.py
        `-- tasks
            `-- main.yml

其中的 test_conn.py 代码如下:

[alick@DevNet]# cat roles/test_conn/files/test_conn.py
#!/usr/bin/python
import socket;
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex(('smtp.163.com',25))
if result == 0:
   print "OK"
else:
   print "Not OK"

其中的 tasks/main.yml 代码如下:

[alick@DevNet]# cat roles/test_conn/tasks/main.yml
---
# tasks file for test_conn
- name: run python script
  script: test_conn.py
  register: test_conn
- name: run python script debug
  debug:
    msg: "{{ test_conn.stdout}}"

如果目标端口是开放的,运行结果如下:

telnet测试端口是否通_Ansible: 使用 python 实现 telnet 端口测试功能_第2张图片

如果目标端口是不开放的,运行结果如下:

telnet测试端口是否通_Ansible: 使用 python 实现 telnet 端口测试功能_第3张图片

我们的上述代码就简单的实现了类似 nmap 的测试端口的功能。

你可能感兴趣的:(telnet测试端口是否通,telnet端口)